summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/gluegen/JavaEmitter.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-08-04 20:46:50 +0200
committerSven Gothel <[email protected]>2023-08-04 20:46:50 +0200
commit8fcea7ef29de9036871efabcd2288b0059af5007 (patch)
tree2492a10405fedeee49ff08b5a5f88b85a7ee3921 /src/java/com/jogamp/gluegen/JavaEmitter.java
parent6dce08b3410cf7f6a1848f814496c5e8c2e1ff73 (diff)
parentb08c61935daa0191f4ec59c6998bc56dae18e54d (diff)
Merge remote-tracking branch 'Mathieu_Fery/feature/prevent_callback_generation_if_setter_is_absent'
Diffstat (limited to 'src/java/com/jogamp/gluegen/JavaEmitter.java')
-rw-r--r--src/java/com/jogamp/gluegen/JavaEmitter.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/java/com/jogamp/gluegen/JavaEmitter.java b/src/java/com/jogamp/gluegen/JavaEmitter.java
index fb310a9..d126215 100644
--- a/src/java/com/jogamp/gluegen/JavaEmitter.java
+++ b/src/java/com/jogamp/gluegen/JavaEmitter.java
@@ -66,6 +66,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import jogamp.common.os.MachineDataInfoRuntime;
@@ -359,7 +360,8 @@ public class JavaEmitter implements GlueEmitter {
@Override
public void beginFunctions(final TypeDictionary typedefDictionary,
final TypeDictionary structDictionary,
- final Map<Type, Type> canonMap) throws Exception {
+ final Map<Type, Type> canonMap,
+ final List<FunctionSymbol> cFunctions) throws Exception {
// this.typedefDictionary = typedefDictionary;
this.canonMap = canonMap;
@@ -371,7 +373,14 @@ public class JavaEmitter implements GlueEmitter {
for(final JavaCallbackDef jcbd : javaCallbacks) {
final Type funcPtr = typedefDictionary.get(jcbd.cbFuncTypeName);
if( null != funcPtr && funcPtr.isFunctionPointer() ) {
- generateJavaCallbackCode(jcbd, funcPtr.getTargetFunction());
+ final Optional<FunctionSymbol> setter = cFunctions.stream()
+ .filter(cFunction -> jcbd.setFuncName.equals(cFunction.getName()))
+ .findFirst();
+ if( setter.isPresent() ) {
+ generateJavaCallbackCode(jcbd, funcPtr.getTargetFunction());
+ } else {
+ LOG.log(WARNING, "JavaCallback '{0}' setter not available", jcbd);
+ }
} else {
LOG.log(WARNING, "JavaCallback '{0}' function-pointer type not available", jcbd);
}