< prev index next >
src/jdk.jextract/share/classes/com/sun/tools/jextract/AsmCodeFactory.java
Print this page
@@ -39,24 +39,26 @@
/**
* Scan a header file and generate classes for entities defined in that header
* file.
*/
-public class AsmCodeFactory extends CodeFactory {
- final ClassWriter global_cw;
- final String internal_name;
- final HeaderFile owner;
- final Map<String, byte[]> types;
- final HashSet<String> handledMacros = new HashSet<>();
- final Logger logger = Logger.getLogger(getClass().getPackage().getName());
+final class AsmCodeFactory extends CodeFactory {
+ private final Context ctx;
+ private final ClassWriter global_cw;
+ private final String internal_name;
+ private final HeaderFile owner;
+ private final Map<String, byte[]> types;
+ private final HashSet<String> handledMacros = new HashSet<>();
+ private final Logger logger = Logger.getLogger(getClass().getPackage().getName());
- public AsmCodeFactory(HeaderFile header) {
+ AsmCodeFactory(Context ctx, HeaderFile header) {
+ this.ctx = ctx;
logger.info(() -> "Instantiate AsmCodeFactory for " + header.path);
- owner = header;
- internal_name = Utils.toInternalName(owner.pkgName, owner.clsName);
- global_cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
- types = new HashMap<>();
+ this.owner = header;
+ this.internal_name = Utils.toInternalName(owner.pkgName, owner.clsName);
+ this.global_cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+ this.types = new HashMap<>();
init();
}
private void init() {
global_cw.visit(V1_8, ACC_PUBLIC | ACC_ABSTRACT | ACC_INTERFACE,
@@ -84,13 +86,13 @@
deps.visitEnd();
}
}
private void handleException(Exception ex) {
- Context.getInstance().err.println(Main.format("cannot.write.class.file", owner.pkgName + "." + owner.clsName, ex));
+ ctx.err.println(Main.format("cannot.write.class.file", owner.pkgName + "." + owner.clsName, ex));
if (Main.DEBUG) {
- ex.printStackTrace(Context.getInstance().err);
+ ex.printStackTrace(ctx.err);
}
}
private void annotateC(ClassVisitor cw, Cursor dcl) {
AnnotationVisitor av = cw.visitAnnotation(
@@ -495,11 +497,11 @@
jt2 = (JType2) jt;
jt = jt2.getDelegate();
} else {
logger.warning(() -> "Should have JType2 in addType");
if (Main.DEBUG) {
- new Throwable().printStackTrace(Context.getInstance().err);
+ new Throwable().printStackTrace(ctx.err);
}
}
if (cursor == null) {
assert (jt2 != null);
if (jt instanceof JType.FnIf) {
@@ -743,14 +745,13 @@
}
public static void main(String[] args) throws IOException {
final Path file = Paths.get(args[1]);
final String pkg = args[0];
- Context ctx = Context.getInstance();
+ Context ctx = new Context();
ctx.usePackageForFolder(file, pkg);
ctx.usePackageForFolder(Paths.get("/usr/include"), "system");
- ctx.sources.add(file);
- ctx.parse(AsmCodeFactory::new);
+ ctx.addSource(file);
+ ctx.parse();
ctx.collectJarFile(Paths.get(args[2]), pkg);
}
-
}
< prev index next >