< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/JavaSourceFactory.java

Print this page




 244 
 245     @Override
 246     public Boolean visitStruct(StructTree structTree, JType jt) {
 247         //generate nested structs recursively
 248         structTree.nestedTypes().forEach(this::generateDecl);
 249 
 250         if (structTree.isAnonymous()) {
 251             //skip anonymous
 252             return false;
 253         }
 254         String nativeName = structTree.name();
 255         Type type = structTree.type();
 256         log.print(Level.FINE, () -> "Create struct: " + nativeName);
 257 
 258         String intf = Utils.toClassName(nativeName);
 259         String name = headerClassName + "." + intf;
 260 
 261         log.print(Level.FINE, () -> "Define class " + name + " for native type " + nativeName);
 262 
 263         JavaSourceBuilder jsb = new JavaSourceBuilder(global_jsb.align() + 1);

 264         jsb.addAnnotation(false, NATIVE_STRUCT, Map.of("value", structTree.layout().toString()));
 265         jsb.interfaceBegin(intf, true, "Struct<" + intf + ">");
 266         // fields
 267         structTree.fields().forEach(fieldTree -> addField(jsb, fieldTree, type));
 268         jsb.interfaceEnd();
 269         addClassIfNeeded(headerClassName + "." + intf, jsb);
 270 
 271         return true;
 272     }
 273 
 274     @Override
 275     public Boolean visitEnum(EnumTree enumTree, JType jt) {
 276         // define enum constants in global_cw
 277         enumTree.constants().forEach(constant -> addConstant(global_jsb,
 278                 constant.location(),
 279                 constant.name(),
 280                 headerFile.dictionary().lookup(constant.type()),
 281                 constant.enumConstant().get()));
 282 
 283         if (enumTree.name().isEmpty()) {




 244 
 245     @Override
 246     public Boolean visitStruct(StructTree structTree, JType jt) {
 247         //generate nested structs recursively
 248         structTree.nestedTypes().forEach(this::generateDecl);
 249 
 250         if (structTree.isAnonymous()) {
 251             //skip anonymous
 252             return false;
 253         }
 254         String nativeName = structTree.name();
 255         Type type = structTree.type();
 256         log.print(Level.FINE, () -> "Create struct: " + nativeName);
 257 
 258         String intf = Utils.toClassName(nativeName);
 259         String name = headerClassName + "." + intf;
 260 
 261         log.print(Level.FINE, () -> "Define class " + name + " for native type " + nativeName);
 262 
 263         JavaSourceBuilder jsb = new JavaSourceBuilder(global_jsb.align() + 1);
 264         addNativeLocation(false, jsb, structTree.location());
 265         jsb.addAnnotation(false, NATIVE_STRUCT, Map.of("value", structTree.layout().toString()));
 266         jsb.interfaceBegin(intf, true, "Struct<" + intf + ">");
 267         // fields
 268         structTree.fields().forEach(fieldTree -> addField(jsb, fieldTree, type));
 269         jsb.interfaceEnd();
 270         addClassIfNeeded(headerClassName + "." + intf, jsb);
 271 
 272         return true;
 273     }
 274 
 275     @Override
 276     public Boolean visitEnum(EnumTree enumTree, JType jt) {
 277         // define enum constants in global_cw
 278         enumTree.constants().forEach(constant -> addConstant(global_jsb,
 279                 constant.location(),
 280                 constant.name(),
 281                 headerFile.dictionary().lookup(constant.type()),
 282                 constant.enumConstant().get()));
 283 
 284         if (enumTree.name().isEmpty()) {


< prev index next >