diff options
author | Sven Gothel <[email protected]> | 2023-08-04 20:46:50 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2023-08-04 20:46:50 +0200 |
commit | 8fcea7ef29de9036871efabcd2288b0059af5007 (patch) | |
tree | 2492a10405fedeee49ff08b5a5f88b85a7ee3921 /src/java/com/jogamp/gluegen/JavaEmitter.java | |
parent | 6dce08b3410cf7f6a1848f814496c5e8c2e1ff73 (diff) | |
parent | b08c61935daa0191f4ec59c6998bc56dae18e54d (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.java | 13 |
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); } |