diff options
author | Sven Gothel <[email protected]> | 2023-06-18 04:45:15 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2023-06-18 04:45:15 +0200 |
commit | afe477a687b516969494f2cbcdf46a6e4961edc6 (patch) | |
tree | c5875a3b0217ede264d945053c99bbb2bb8938b0 /src/java/com/jogamp/gluegen/JavaEmitter.java | |
parent | 302c487d047c98af4c57af4c5cb82ea883f3144a (diff) | |
parent | d7bc10d7ff0e3a30d74c4e4c439230f3983bcfb4 (diff) |
Merge remote-tracking branch 'Mathieu_Fery/feature/add_customJNICode_directive'
Diffstat (limited to 'src/java/com/jogamp/gluegen/JavaEmitter.java')
-rw-r--r-- | src/java/com/jogamp/gluegen/JavaEmitter.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/java/com/jogamp/gluegen/JavaEmitter.java b/src/java/com/jogamp/gluegen/JavaEmitter.java index 917ff35..0a403ea 100644 --- a/src/java/com/jogamp/gluegen/JavaEmitter.java +++ b/src/java/com/jogamp/gluegen/JavaEmitter.java @@ -844,7 +844,7 @@ public class JavaEmitter implements GlueEmitter { // Note that machDescJava MachineDataInfo is always 64bit unix, // which complies w/ Java types. - boolean needsNativeCode = false; + boolean needsNativeCode = !cfg.customJNICodeForClass(containingJTypeName).isEmpty(); // Native code for calls through function pointers gets emitted // into the abstract base class; Java code which accesses fields @@ -1176,6 +1176,7 @@ public class JavaEmitter implements GlueEmitter { javaUnit.emitln("}"); javaUnit.close(); if (needsNativeCode) { + emitCustomJNICode(jniUnit, containingJTypeName); jniUnit.close(); } if( GlueGen.debug() ) { @@ -2721,6 +2722,23 @@ public class JavaEmitter implements GlueEmitter { unit.emitln(" // ---- End CustomJavaCode .cfg declarations"); } + /** + * Emit all the strings specified in the "CustomJNICode" parameters of + * the configuration file. + */ + protected void emitCustomJNICode(final CodeUnit unit, final String className) throws Exception { + final List<String> code = cfg.customJNICodeForClass(className); + if (code.isEmpty()) + return; + + unit.emitln(); + unit.emitln(" // --- Begin CustomJNICode .cfg declarations"); + for (final String line : code) { + unit.emitln(line); + } + unit.emitln(" // ---- End CustomJNICode .cfg declarations"); + } + public String[] getClassAccessModifiers(final String classFQName) { String[] accessModifiers; final MethodAccess acc = cfg.accessControl(classFQName); |