Skip to content
The Jenkins Controller is preparing for shutdown. No new builds can be started.
Unstable

Changes

Summary

  1. Add support for riscv64 architecture (details)
  2. glibc-compat-symbols.h: skip versioning on PPC64/PPC64LE (details)
  3. GlueGen Struct [1]: Enhance com.jogamp.common.nio.* to serve a most native-free-code Struct-Code generation (details)
  4. GlueGen Struct [2]: Add CodeUnit: Representing a generated C or Java file, covering multiple FunctionEmitter allowing to unify output, decoration and dynamic helper code injection per unit (details)
  5. GlueGen Struct [3]: Adopt to CodeUnit Abstraction (replacing plain PrintWriter...) (details)
  6. GlueGen Struct [4]: JavaConfiguration Change: Drop 'ManualStaticInitCall', 'ForceStaticInitCode'; Add 'ReturnsStringOnly', 'MaxOneElement' and 'ImmutableAccess' (details)
  7. GlueGen Struct [5]: Revised Struct Mapping + Documentation (details)
  8. Buffers.copyNativeToDirectByteBuffer(): Remove unused var (details)
  9. GlueGen Struct [6]: Simplify adding 'private ElementBuffer _eb*' memory buffer cache once @ 'releaseVal(..)' code creation (details)
  10. feat(cli): Add --preserveGeneratedCPP option inside GlueGen (details)
  11. feat(feature): Enable pragma once management (details)
  12. feat(CompoundType): Improve error log on CompoundType.addField and CompoundType.setBodyParsed when body is already parsed (details)
  13. feat(translationUnit): Improve logs in case of failure inside translationUnit (details)
  14. feat(constants): Add supports of ~ inside ConstantDefinition (details)
  15. feat(jni): Add directive for dedicated JNI Code with CustomJNICode (details)
  16. GlueGen Struct [7]: Keep struct class non-final (revert), but ensure methods are final. Drop useless 'final' of 'static final'. (details)
  17. ElementBuffer: Add absolute get/put multi-element with full srcElemPos, destElemPos, elementCount argument set and use it for the single absolute get/put methods. (details)
  18. GlueGen Struct [8]: Revised setter (resolved shrinking array, using 'subset' flag), added (detailed) JavaDoc in generated code (details)
  19. doc/JogAmpMacOSVersions.html: Replaced w/ standalone html5 w/ header (utf8) (details)
  20. doc/GlueGen_Mapping.md: Remove note regarding shrinking array, resolved (details)
  21. Drop .md -> .html generated docs (ugly), use our cgit md -> html via refined pandoc styles (details)
  22. JavaType: Add getSignature(..) like Type (details)
  23. Type: Add hasSize(), change getSignature(..) for const: isConstTypedef() -> "typedef", isConstRaw() -> "native" (details)
  24. GlueGen Struct [9]: Fix regression which added a pointer referencing type 'void', i.e. exclude if !baseCElemType.hasSize() // like 'void*' -> 'void' (details)
  25. GlueGen Struct [10]: Don't skip primitive w/ platform dependent sized type in struct (like 'int') .. (details)
  26. GlueGen Struct [11]: Formalize Ownership (enum) and elaborate generated Java API-Doc (details)
  27. GlueGen Struct [12]: Throw InternalError(..) for produced code-path where Ownership.Native _and_ native memory potentially gets replaced (details)
  28. GlueGen Struct [9b]: Add unit test for fixed 'void*' regression commit eec3f21c3597ff9bf9760a06e00dd341214ea90d (details)
  29. GlueGen Struct [13]: Adopt GlueGen_Mapping.md to changes, added `Struct Java Signature Examples` w/ Java API Doc snippets (details)
  30. Bring back produced html5 standalone files, having fixed pandoc usage. (details)
  31. CPP Enable Pragma Once: Use default jcpp branch as its merged now (details)
  32. CPP Enable Pragma Once: Add GlueGen.run(..) debug output w/ all paramter (details)
  33. CPP Enable Pragma Once: Default is 'true', since usually all compiler and APIs do support this feature (details)
  34. CustomJNICode: Fix/complete commit d7bc10d7ff0e3a30d74c4e4c439230f3983bcfb4: Add emitCustomJNICode(..) for JavaEmitter.endFunctions() not just structs and fix the JNI-c stub code (details)
  35. CustomJNICode: Add missing (separated) test1p1-CustomJNICode.c.stub (details)
  36. fix(cli): Fix disablePragmaOnce option (details)
  37. CPP Enable Pragma Once: Remove cli '--enablePragmaOnce' option as it is enabled by default (details)
  38. GlueGen Struct [14]: Update doc/GlueGen_Mapping.md (details)
  39. www/index.html: Copy Documentation section into main text for visibility (details)
  40. Doc: Manual: Adding disclaimer being slightly outdated and hint to GlueGen_Mapping document (details)
  41. GlueGen Type: Use virt getTargetType() for ArrayType dropping getElementType(); Rename getBase{Elem ->}Type() to align with getTargetType() (details)
  42. doc/GlueGen_Mapping.md: Place `Struct Setter Pseudo-Code` above 'Signature Table' and add a brief signature to mapping description to the former (details)
  43. GlueGen Struct [15]: Add FunctionPointer getter and setter support w/ documentation (details)
  44. GlueGen Struct [15b]: FunctionPointer: Drop is<FuncName>Null() -> use get<FuncName>() (details)
  45. GlueGen junit test2.h: Add an anonymous struct pointer w/ opaque long config (details)
  46. JavaEmitter.typeToJavaTypeImpl(): Add targetType in GlueGenException and remove '"' in message (details)
  47. GlueGen Test: Test2 -> Test2FuncPtr (details)
  48. NIO NativeBuffer, {Element,Pointer}Buffer: Add limit, clear and flip; Arrange wrap/deref arguments equal; Add equal set of absolute get/set methods (details)
  49. GlueGen: Type, JavaType: Align getSignature(..) output (details)
  50. GlueGen: Type: Have get{Base,Target}Type() stop at isFunctionPointer(), enhance API doc; Add getArrayBaseOrPointerTargetType() and getTargetFunction() (details)
  51. GlueGen: JavaConfiguration.typeInfo(..): Clarify DEBUG_TYPE_INFO output (details)
  52. GlueGen: JavaConfiguration.promoteTypeInfo(): Fix primitive pointerDepth, i.e. only pass numPointersStripped w/o adding info.pointerDepth() (details)
  53. GlueGen Struct [16]: Add support for pointer-pointer and function-pointer values (details)
  54. GlueGen: Expose CMethodBindingEmitter.getJNIMangledArgs() as a public static to be reusable (details)
  55. GlueGen: Rename GlueEmitter.getConfig{uration->}() and drop JavaEmitter.getConfig(), cleaning up API usage (details)
  56. GlueGen Fix ProcAddressCMethodBindingEmitter.jniMangle(..) override: Use renamed {jniMangle->getJNIMangledArg}(..) (details)
  57. GlueGen: Add JavaEmitter(JavaConfiguration) ctor (details)
  58. JavaEmitter.generateArrayGetterSetterCode(): Place elemCountExpr null check where it could occur -> non-opaque, non-primitive array case (details)
  59. GlueGen: Fix Type.getSignature(..): Test for isFunctionPointer() to elaborate on FunctionType as getTargetType() only retruns a function-ptr and no more a function-type. (details)
  60. GlueGen FunctionType: Expose toString(..) w/ 'isPointer' argument (details)
  61. GlueGen Add JavaType.forObjectClass() (details)
  62. GlueGen FunctionSymbol: Simplify ctor reusing main-ctor; Be always reachable via type(def)name, ctor: addAliasedName( type.getCName() ) (details)
  63. GlueGen JavaConfiguration: Add 'JavaCallbackDef <funcion-pointer-typedef-name> [user-param-idx]' (details)
  64. GlueGen JavaConfiguration: Add List<Integer> stringArguments(final AliasedSymbol symbol) (details)
  65. GlueGen JavaCallback: Add preliminary implementation (WIP): Produces proper interfaces, TODO implementation (details)
  66. GlueGen JavaCallback: Add more related documentation (details)
  67. GlueGen JavaType: Add new nature 'String clazzName': Future (not yet generated or existing) Class objects (existing at runtime) (details)
  68. GlueGen JavaCallback: Use new JavaType nature 'named-class', denoting the generated callback interface mapping the callback function. (details)
  69. GlueGen JavaCallback: Expose getJNIMethodDescriptor() for JNI mangled method names, used in CMethodBindingEmitter; Use JavaCallback's function-pointer-type capital-name as simple-class-name and its FQN for JNI resolution. (details)
  70. GlueGen JavaCallback: Move JavaCallback into JavaConfiguration, accessible across *Emitter (needed for CMethodEmitter as well); Add JavaCallback.methodSignature to be passed to native function later on to find the callback jmethodID (details)
  71. GlueGen JavaCallback: Add JavaCallback.methodSignature to JNI arg-list and pass value at invocation, allowing to find the jmethodID of callback (details)
  72. GlueGen Struct [17]: Handle void pointers, i.e. `void*`, within a struct as `Opaque` configured pointer-types (details)
  73. GlueGen doc/GlueGen_Mapping.md: Mentiond OO-Style API mapping and add section for it (details)
  74. GlueGen LibraryOnLoad Config: Generate `JNI_OnLoad(..)` for dynamic and `JNI_OnLoad_<LibraryBasename>(..)` for static libraries and `JVMUtil_GetJNIEnv(..)` to resolve the `JNIEnv*` as used by JavaCallback (details)
  75. GlueGen: Move [de]captializeString(..) JavaEmitter -> static in CodeGenUtils (details)
  76. GlueGen CMethodBindingEmitter: Refactor emitBodyReturnResult() -> emitBodyMapCToJNIType(): Reuse to converting any C-type argument to java JNI type (i.e. native callback to JavaCallback) (details)
  77. GlueGen FunctionType: Factor out getParameterList(..) from toString(..) and drop 'void' and use typedef-name; MethodBinding: Add getCParameterList(..) and getJavaParameterList(..) for general usage similar to FunctionType.getParameterList() (details)
  78. GlueGen ProcAddressCMethodBindingEmitter.jniMangle() override: Only add additional params if produced name containes '__', i.e. JNI mangled parameter (details)
  79. GlueGen JavaCallback: 1st Working Draft: Changed 'JavaCallbackDef' config, added code generation incl. native to Java dispatch and resource management (details)
  80. Doc: Align GlueGen_Mapping.md intro w/ README.md and www/index.html (details)
  81. Doc: www/index.html: Fix JOGL UML link (details)
  82. Doc intro: Fix LibraryOnLoad using generic LibraryBasename (details)
  83. README.md: Fix links (details)
  84. GlueGen JavaCallback: Set-Callback: Ensure a previously mapped 'userParam' instance is released before binding new one; Add test changing callback function. (details)
  85. Test4JavaCallback: Just rename myUserParam -> myUserParam01 for future tests.. (details)
  86. Eclipse classpath (details)
  87. GlueGen FunctionType/MethodBinding: get*ParameterList(): Use a more flexible way via a ParameterConsumer visitor, also usable for other iterative parameter generator (details)
  88. GlueGen JavaCallback: Resolve key mapping of callback and associated resources via 'JavaCallbackKey' config and custom `SetCallback-KeyClass` (details)
  89. GlueGen Intro: Add section about its comprehensive runtime library, shorten the JNI_OnLoad section (details)
  90. GlueGen JavaCallback: Release the associated data (natively) only after the actual toolkit setCallback call (details)
  91. GlueGen JavaCallback: Only produce default 'Key' class if keys are used, expose 'Key' to public and use it. Expose release*() and get*Keys() methods (details)
  92. GlueGen JavaCallback: Use `SetCallback-KeyClass` if manually specified, even if no keys are defined! (details)
  93. GlueGen JavaCallback: Native callback: Check ObjectRef validity and synchronize (MonitorEnter/Exit) with same Object of Java impl. -> thread safe (details)
  94. GlueGen JavaCallback: Emphasize all methods are thread-safe (details)
  95. doc/GlueGen_Mapping.md: Typo (details)
  96. GlueGen JavaCallback: Document native callback use-after-free potential (caught), zero-mem @ release (details)
  97. GlueGen JavaCallback: Native Callback: Reduce 'look-ahead' of read-after-free to critical lockObj only (details)
  98. GlueGen Struct [18]: Drop redundant 'static get*ElemCount() { return 1 }` for: isPrimitive && !isPointer && staticElemCount && maxOneElement (details)
  99. CMethodBindingEmitter JavaCallback: Use a friendly readable basename for errors (details)
  100. GlueGen JavaCallback: CMethodBindingEmitter: Check lockObj for NULL before GetObjectRefType(), avoid certain (older) Hotspot issues (details)
  101. GlueGen JavaCallback: CMethodBindingEmitter: Check, describe & clear exception if occurring - we must assume async off-thread source in general (details)
  102. GlueGen JavaCallback: Unify native 'T_JavaCallbackGlueData' typedef struct (details)
  103. GlueGen JavaCallback: Revised: Static Java callback dispatcher, dropping native heap, support Struct UserParam ... (details)
  104. GlueGen JavaType.appendDescriptor(..): Fix regression: Must return a vanilla descriptor ('/' not '_') i.e. non JNI method-name descriptor to avoid double conversion (details)
  105. doc/GlueGen_Mapping.md: Quote `void*` correctly .. (details)
  106. GlueGen JavaCallback/LibraryOnLoad: Always include the `libraryBasename` agnostic 'emitJNIEnvDecl()' (declaration) in JNI code; Detach the thread from the JVM if newly attach in callback! (details)
  107. GlueGen: Add 'PascalString' string semantics (length + value-ptr), added prelim code for JavaCallback use-case emitBodyMapCToJNIType() (details)
  108. Manual: Refine `ArgumentIsPascalString` (details)
  109. GlueGen JavaCallback: Fix `staticCBClazz*` initial setup (only), using a NewGlobalRef() for jclass (not required for static jmethodID) (details)
  110. GlueGen JavaCallback: Remove ambiguity: Config JavaCallbackDef/JavaCallbackKey: Always define both parameter indices; emitJavaStaticCallback(): Use cbFuncBinding and cbFuncKeyIndices from callback parameter to build key (details)
  111. GlueGen JavaCallback Doc: Remove reasoning (avoiding ambiguity) to CallbackFunction parameter index (details)
  112. GlueGen JavaCallback: Add capability to have UserParam as (part of) key (details)
  113. Manual: Fix ArgumentIsPascalString (details)
  114. GlueGen JavaCallback: Add optional custom 'Callback-UserParamClass` for non-compound `UserParam` types to have more clarity in resulting API (details)
  115. doc/GlueGen_Mapping.md: Typos 'UserParam' -> 'UserParamClass' (details)
  116. doc/GlueGen_Mapping.md: Typos 'UserParam' -> 'UserParamClass' (2 more occassions) (details)
  117. doc/GlueGen_Mapping.md: Using 'UserParamClass' .. grammar (3 commits for 1 discount today) (details)
  118. feat(generation): Add setter generation for not constant and not opaque compound attribute (details)
  119. feat(callbackGenerator): Add basic management of callback without userData (details)
  120. doc/GlueGen_Mapping.md: Add some documentation with JavaCallback without userData (details)
  121. feat(arrayAccessor): Allow to use ReturnedArrayLength with getter associated with field with name in PascalCase or camelCase (details)
  122. CMethodBindingEmitter.emitBodyMapCToJNIType(..): Add proper intendation to NIO ByteBuffer generation (isNIOBuffer || isCompoundTypeWrapper) (details)
  123. JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode}(): Group 'userParamDefined' case (cleanup) (details)
  124. JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode, emitJavaCallbackBodyPassJavaArguments}(): Use capitalized sub-string 'baseArgName' for (static) callback related entities (details)
  125. JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode, emitJavaCallbackBodyPassJavaArguments}(): Fix exclusion of ad-hoc compound conversion for userParam (details)
  126. JavaCallbackEmitter.emitCSetFuncPreCall(): Drop redundant arg 'CMethodBindingEmitter jcbFuncCMethodEmitter', use local 'info.cbFuncBinding' (details)
  127. JavaCallbackEmitter.emitJavaCallbackBodyPassJavaArguments(): Drop redundant arg 'MethodBinding jcbFuncCMethodBinding', use local 'info.cbFuncBinding' (details)
  128. JavaCallbackEmitter.emitCAdditionalCode(): Use `info.cbFuncBinding` locally and passed 'jcbFuncCMethodEmitter' only to invoke CMethodBindingEmitter.emitBodyMapCToJNIType(..) (details)
  129. JavaEmitter: Encapsulate 'needsJavaCallbackCode' query in JavaConfiguration. TBD: Is this even required? (details)
  130. Fix & Enhance Test4JavaCallback for non-userParam chapter12*: Fix ad-hoc compound equals and add chapter12b for additional parameter with different order (details)
  131. feat(callbackGenerator): Prevent generation of CallBack interface if setter related isn't present (details)
  132. CMethodBindingEmitter.emitBodyPassCArguments(): Either pass STRING_CHARS_PREFIX or javaCallbackEmitter.emitCOptArgumentSuffix(..) (details)
  133. JavaEmitter.bindFunction(): Add JavaCallback userParam non-void case (i.e. 'String') (details)
  134. JavaCallbackEmitter.emitJavaKeyClass(): Use directBufferAddress for compound types in equals and hashCode, i.e. use memory identity (details)
  135. JavaCallback: Remove non-UserParam JavaConfiguration.requiresJavaCallbackCode() (details)
  136. doc/GlueGen_Mapping.md: Shorten UserParamIndex '<0' to disable 'UserParam' and produce html page (details)
  137. wip(test_case): Example of test case for issue related of 927bbc7160a812bb29c0e7120d4a3009bfb13bbf (details)
  138. Revert "JavaCallback: Remove non-UserParam JavaConfiguration.requiresJavaCallbackCode()" (details)
  139. WIP JavaCallback Tests: Rename test2-gluegen.cfg -> test2-if.cfg (details)
  140. WIP JavaCallback Tests: Fix: Link library Bindingtest2p1 against library test2 not test1 (details)
  141. WIP JavaCallback Tests: Fix: test2-CustomJavaImplCode.java.stub must be 'IncludeAs' for both implementations, Bindingtest2p1Impl and Bindingtest2p2Impl (details)
  142. WIP JavaCallback Tests: Fix typo in 'CustomJavaCode' Java class target name (details)
  143. WIP JavaCallback Tests: Fix Test4p2JavaCallback.chapter__TestLoadLibrary() issue loadBindingtest2p2() not loadBindingtest2p1() (details)
  144. GlueGen Code Unit Tests using a statically linked tool library do not need to load the tool library dynamically, hence dropped. (details)
  145. JavaConfiguration.requiresJavaCallbackCode() shall return true for all JavaCallback cases no just non-userParam case (details)
  146. Cleanup unit test class names: Try to start w/ 'Test', remove intermediate 'Test' for supporting, non-test classes (details)
  147. Cleanup unit test class names (pt2): Try to start w/ 'Test', remove intermediate 'Test' for supporting, non-test classes (details)
  148. Cleanup unit test class names (pt3): Try to start w/ 'Test', remove intermediate 'Test' for supporting, non-test classes (details)
  149. Add notes `Loading a MacOS Native Library's Dependencies` and use absolute path in unit test script for library-path (details)
  150. Minor cleanup (includes, spacing) (details)
  151. JavaCallback: Add Mathieu Féry's detailed git comment regarding 2abb40b0ca9a6a06bdbe3e66b4235301ed15c693; Updated GlueGen_Mapping.md (details)
  152. feat(generation): Fix CodeGenUtils.emitJavaHeaders (details)
  153. feat(generation): Fix generic parsing inside JavaParser.g to allow parsing of java callback implementation (details)
  154. Bump jcpp (merged w/ jcpp upstream v1.4.14) and adopt to changes (details)
  155. Drop PCPP, GlueGen exclusively uses JCPP; Adopt test case Test{P->J}CPP (details)
  156. TestJCPP: Add recursive-include test and include a header file starting with '-' and in a subdir containing a '-' (details)
  157. ANTLR Syntax: Add debugging facility for GnuCParser.g and StdCParser.g (details)
  158. Bug 1450: Fix 'Number' rule, i.e. only consume positive numbers as `additiveExpr` and `unaryExpr` consume the '-' operator (details)
  159. Bug 1450: Widen ConstantDefinition.isConstantExpression() to include 'patternCPPOperand' (details)
  160. Bug 1450: Be more verbose w/ JavaEmitter comment lines for enums and defines, include native expression (details)
  161. Bug 1450: Add test snippets covering the issues: test2.h for Bindingtest2, TestJCPP and new TestCParser (details)
  162. Bug 1450: TestCParser: Enable test10_cc() w/o JCPP (details)
  163. GlueGen: 'from expression' -> 'with expression' (details)
Commit 953f594a00094362e0ed56553b16aecbee2b92f2 by schwab
Add support for riscv64 architecture
The file was modified make/build.xml (diff)
The file was modified make/gluegen-cpptasks-base.xml (diff)
Commit 6489e38ae8d86b1a80336c20774fc9b82313cef3 by tgc
glibc-compat-symbols.h: skip versioning on PPC64/PPC64LE
The file was modified make/stub_includes/platform/glibc-compat-symbols.h (diff)
Commit 03c548d96e5c81d0fc39503fe3042cf03e0a75e2 by Sven Gothel
GlueGen Struct [1]: Enhance com.jogamp.common.nio.* to serve a most native-free-code Struct-Code generation

Recfactored all NIO buffer utils to Buffers, i.e. buffer <-> address, memcpy, strnlen, etc

Buffers:
- Added copyNativeToDirectByteBuffer(..), allowing to copy a native memory slice into a direct buffer.
- Added typeNameToBufferClass(String) and sizeOfBufferElem(Class<? extends Buffer>)
- Completed slize2<Type>(..) buffer-mapping methods
- Exposure of safe getDirectByteBuffer(..) w/ null-check (package private)

Added NativeBuffer.storeDirectAddress(..), allowing to write the array address into a native buffer (struct, etc),
allowing to referencing the ElementBuffer (linear array of elements) and PointerBuffer (array of pointer).
Hint: This can be read via PointerBuffer.wrap(..).get(0)

Added ElementBuffer (a NativeBuffer) mapping an array of elements,
completing native abstraction next to PointerBuffer (array of pointer).

ElementBuffer can dereference an existing element-array by native address via ElementBuffer.derefPointer(..).
Views of its content can be directly accessed via ElementBuffer.slice(..).

+++

These utilities and buffer abstractions will allow to reuse code and simplify the GlueGen struct get/set implementations
and help to reduce native code injection.
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was addedsrc/java/com/jogamp/common/nio/ElementBuffer.java (diff)
The file was modified src/java/com/jogamp/common/nio/Buffers.java (diff)
The file was modified src/java/com/jogamp/common/nio/StructAccessor.java (diff)
The file was modified src/java/com/jogamp/common/nio/NativeBuffer.java (diff)
The file was removedsrc/native/common/PointerBuffer.c (diff)
The file was addedsrc/native/common/Buffers.c (diff)
The file was modified src/java/com/jogamp/common/nio/AbstractBuffer.java (diff)
The file was modified src/java/com/jogamp/common/nio/PointerBuffer.java (diff)
Commit f1678c4ac8b85c85d11b737d08dcfe31b388e021 by Sven Gothel
GlueGen Struct [2]: Add CodeUnit: Representing a generated C or Java file, covering multiple FunctionEmitter allowing to unify output, decoration and dynamic helper code injection per unit

- Handles file open and have public ctor emitAutogeneratedWarning(..), being self-contained

- Includes `JVMUtil_NewDirectByteBufferCopy(..)` implementation in CCodeUnit,
  may be injected if required in customCode via emitHeader(..)
The file was addedsrc/java/com/jogamp/gluegen/JavaCodeUnit.java (diff)
The file was addedsrc/java/com/jogamp/gluegen/CCodeUnit.java (diff)
The file was modified src/java/com/jogamp/gluegen/CodeGenUtils.java (diff)
The file was addedsrc/java/com/jogamp/gluegen/CodeUnit.java (diff)
Commit 0a9105dd3ebbcf4b98664e50333334bff677031c by Sven Gothel
GlueGen Struct [3]: Adopt to CodeUnit Abstraction (replacing plain PrintWriter...)
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressJavaMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/structgen/CStructAnnotationProcessor.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/MethodBinding.java (diff)
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/CompoundType.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/FunctionEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java (diff)
Commit aeadfab9572e4b441b1bc1f0708cf4c72dfe181e by Sven Gothel
GlueGen Struct [4]: JavaConfiguration Change: Drop 'ManualStaticInitCall', 'ForceStaticInitCode'; Add 'ReturnsStringOnly', 'MaxOneElement' and 'ImmutableAccess'

Drop 'ManualStaticInitCall', 'ForceStaticInitCode':
  With new CCodeUnit's `JVMUtil_NewDirectByteBufferCopy(..)` implementation
  and generalized Buffers' methods, no specific init code is required anymore.

Add 'ReturnsStringOnly', 'MaxOneElement' and 'ImmutableAccess':
- 'ReturnsStringOnly' only String getter, drop ByteBuffer/byte[]
- 'MaxOneElement' only one element maximum for pointer reference
- 'ImmutableAccess' strict read-only, also reduces generated code a lot
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/MethodBinding.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 8b127c4c1dd26fcb1756805ddb83729203161f78 by Sven Gothel
GlueGen Struct [5]: Revised Struct Mapping + Documentation

GlueGen Revised Struct Mapping (esp pointer to array or single element), Struct String Charset, .. and Documentation

- Documentation:
    - Added README.md
      Let's have a proper face for the git repo

    - Added doc/GlueGen_Mapping.md (and its html conversion doc/GlueGen_Mapping.html)
      Created a new document covering application and implementation details suitable for users/devs.

    - Added doc/JogAmpMacOSVersions.md conversion to doc/JogAmpMacOSVersions.html

    - Updated www/index.html

- Use *CodeUnit instead of PrintWriter, representing a Java or C code unit covering a set of functions and structs.
    The CCodeUnit also handles common code shared by its unit across functions etc.

- Dropping 'static initializer', as its no more required
    due to simplified `JVMUtil_NewDirectByteBufferCopy()` variant.

- Revised Struct Mapping:
  - Pure Java implementation to map primitive and struct fields within a struct
    by utilizing ElementBuffer.

    Only 'Function Pointer' fields within a struct require native code.

    Exposes `static boolean usesNativeCode()` to query whether native code is used/required.

  - Transparent native memory address API

    Expose `long getDirectBufferAddress()` and `static TK_Struct derefPointer(long addr)`,
    allowing to
    - pass the native struct-pointer with native code
    - reconstruct the struct from a native struct-pointer
    - have a fully functional `TK_Struct.derefPointer(struct.getDirectBufferAddress())` cycle.

  - Add 'boolean is<Val>Null() to query whether a pointer (array) is NULL

  - *Changed* array get/set method for more flexibility alike `System.arraycopy(src, srcPos, dest, destPos, len)`,
    where 'src' is being dropped for the getter and 'dest' is being dropped for the setter
    as both objects are reflected by the struct instance.

  - *Changed* `get<Val>ArrayLength()` -> `get<Val>ElemCount()` for clarity

  - Considering all ConstElemCount values with config 'ReturnedArrayLength <int>'
    to be owned by native code -> NativeOwnership -> Not changing the underlying memory region!
    JavaOwnership is considered for all pointer-arrays not of NativeOwnership.
    Hence any setter on a NativeOwnership pointer-array will fail with non-matching elem-count.

  - Add 'release<Val>()' for JavaOwnership pointer-arrays,
    allowing to release the Java owned native memory incl. null-ing pointer and set<Val>ElemCount(0).

  - Support setter for 'const <type>*' w/ JavaOwnership, i.e. pointer to const value of a primitive or struct,
    setter and getter using pointer to array or single element in general.

  - Added Config `ImmutableAccess symbol` to disable all setter for whole struct or a field

  - Added Config `MaxOneElement symbol` to restrict a pointer to maximum one element and unset
    initial value (zero elements)

  - Added Config `ReturnsStringOnly symbol` to restrict mapping only to a Java String,
    dropping the ByteBuffer variant for 'char'

  - String mapping default is UTF-8 and can be read and set via [get|set]Charset(..) per class.

  - Dynamic string length retrieval in case no `ReturnedArrayLength` has been configured
    has changed from `strlen()` to `strnlen(aptr, max_len)` to be on the safe site.

    The maximum length default is 8192 bytes and can be read and set via [get|set]MaxStrnlen(..) per class.

    FIXME: strnlen(..) using EOS byte non-functional for non 8-bit codecs like UTF-8, US-ASCII.
           This is due to e.g. UTF-16 doesn't use an EOS byte, but interprets it as part of a code point.

  - TODO: Perhaps a few more unit tests

  - TODO: Allow plain 'int' to be mapped in structs IFF their size is same for all MachineDescriptions used.
          Currently this is the case -> 4 bytes like int32_t.
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified doc/JogAmpMacOSVersions.md (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test1p2DynamicLibraryBundle.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1-common.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was addedREADME.md (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test1p1JavaEmitter.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test1p2ProcAddressEmitter.java (diff)
The file was addeddoc/GlueGen_Mapping.html (diff)
The file was addeddoc/JogAmpMacOSVersions.html (diff)
The file was modified www/index.html (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1.c (diff)
The file was modified make/build-test.xml (diff)
The file was addeddoc/GlueGen_Mapping.md (diff)
Commit fdccf16290c7b742337d3f7ab66e4b85660ca781 by Sven Gothel
Buffers.copyNativeToDirectByteBuffer(): Remove unused var
The file was modified src/java/com/jogamp/common/nio/Buffers.java (diff)
Commit 88309192b450e09ba16e9d72adac178c4ce47dc3 by Sven Gothel
GlueGen Struct [6]: Simplify adding 'private ElementBuffer _eb*' memory buffer cache once @ 'releaseVal(..)' code creation
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified make/build-test.xml (diff)
Commit d98d25f26a8231c746f8e461a6d932182376cd0b by mfery
feat(cli): Add --preserveGeneratedCPP option inside GlueGen
The file was modified src/java/com/jogamp/gluegen/structgen/CStructAnnotationProcessor.java (diff)
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
Commit 738c15d654f67ec8aeccec2b46f5a0804c793491 by mfery
feat(feature): Enable pragma once management
The file was modified src/java/com/jogamp/gluegen/pcpp/PCPP.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/pcpptest.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/PCPPTest.java (diff)
The file was modified .gitmodules (diff)
The file was modified src/java/com/jogamp/gluegen/structgen/CStructAnnotationProcessor.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/pcpptest-included.h (diff)
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
The file was modified jcpp (diff)
Commit e1d5b49ecd9b180b6a80ad4d0ab63e0807682621 by mfery
feat(CompoundType): Improve error log on CompoundType.addField and CompoundType.setBodyParsed when body is already parsed
The file was modified src/java/com/jogamp/gluegen/cgram/types/CompoundType.java (diff)
Commit c0a5b3fcc4a2d7f5c30f95e9b387c8a2e02b4f6f by mfery
feat(translationUnit): Improve logs in case of failure inside translationUnit
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
Commit 8d3e22e8c54bca8e84ea94566f47b8f24cc24b60 by mfery
feat(constants): Add supports of ~ inside ConstantDefinition
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was modified src/java/com/jogamp/gluegen/ConstantDefinition.java (diff)
Commit d7bc10d7ff0e3a30d74c4e4c439230f3983bcfb4 by mfery
feat(jni): Add directive for dedicated JNI Code with CustomJNICode
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test1-CustomJNICode.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test1p1JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1-common.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test1p2ProcAddressEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1-CustomJavaCode.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test1p2DynamicLibraryBundle.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 106a552817e6da2845052b48ebbfc14cf05edbd5 by Sven Gothel
GlueGen Struct [7]: Keep struct class non-final (revert), but ensure methods are final. Drop useless 'final' of 'static final'.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 8b1db2e6cce3289ed043f85660505551b11e3374 by Sven Gothel
ElementBuffer: Add absolute get/put multi-element with full srcElemPos, destElemPos, elementCount argument set and use it for the single absolute get/put methods.
The file was modified src/java/com/jogamp/common/nio/ElementBuffer.java (diff)
Commit a0abee0deb699fc97fc1146200c9057de15798d6 by Sven Gothel
GlueGen Struct [8]: Revised setter (resolved shrinking array, using 'subset' flag), added (detailed) JavaDoc in generated code

Revised setter:

A) int32_t val[10] -> setter for a subset change only, as-is with args[src, srcPos, destPos, length]
                     - no new memory, reuse only
                     - no special action to be performed

B) int32_t* val -> setter with toggle 'subset' with args[subset, src, srcPos, destPos, length],
                - replace memory w/ 'subset==false' where it also may copy 'destPos' gap from old -> new
                - reuse memory w/ 'subset==true', where destPos+length <= elementCount

C) const int32_t* val -> setter to replace referenced memory only args[src, srcPos, length]
                     - always replaces memory, no copy of a gap (no destPos)

Hence:
- case (A) stays as is
- case (B) will be revised and argument 'boolean subset' added
- case (C) will be revised (simplified) and argument 'destPos' removed
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
Commit 6e8d3491863f21283edfd8aa0116599248fdc6fe by Sven Gothel
doc/JogAmpMacOSVersions.html: Replaced w/ standalone html5 w/ header (utf8)
The file was modified doc/JogAmpMacOSVersions.html (diff)
Commit f364dd017e548d1b61b0b01ecd4ab2dbe4924d76 by Sven Gothel
doc/GlueGen_Mapping.md: Remove note regarding shrinking array, resolved
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
Commit 42bd110d9ec63594cc028f3ee8a459424b1d2ae0 by Sven Gothel
Drop .md -> .html generated docs (ugly), use our cgit md -> html via refined pandoc styles

Would need to fix my standalone pandoc setup to produce proper standalone docs.
The file was modified www/index.html (diff)
The file was removeddoc/GlueGen_Mapping.html (diff)
The file was removeddoc/JogAmpMacOSVersions.html (diff)
Commit 99574c6adb0aad760162fea744606345fc564472 by Sven Gothel
JavaType: Add getSignature(..) like Type
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
Commit 0e90617503c71eedba05b604d4b35ca2d14928ec by Sven Gothel
Type: Add hasSize(), change getSignature(..) for const: isConstTypedef() -> "typedef", isConstRaw() -> "native"
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
Commit eec3f21c3597ff9bf9760a06e00dd341214ea90d by Sven Gothel
GlueGen Struct [9]: Fix regression which added a pointer referencing type 'void', i.e. exclude if !baseCElemType.hasSize() // like 'void*' -> 'void'
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 5a19d4fb868f7459dc81ee7e82e1040f79a87544 by Sven Gothel
GlueGen Struct [10]: Don't skip primitive w/ platform dependent sized type in struct (like 'int') ..

We already support platform dependent sizes like pointer etc, no reason to drop e.g. 'int'.

Note: 'int' is also always 32bit of size within our current set of supported platforms, e.g. MachineDataInfo.

Further fix and clarify primCElemFixedSize and primElemSizeExpr, only to be true and set if isPrimitive.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 2837fad810b66ace8d841c8a67577db442883c78 by Sven Gothel
GlueGen Struct [11]: Formalize Ownership (enum) and elaborate generated Java API-Doc
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 187c097055dc691a2ee65bed1c06c089aaf5cb59 by Sven Gothel
GlueGen Struct [12]: Throw InternalError(..) for produced code-path where Ownership.Native _and_ native memory potentially gets replaced
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 4761c936ab5e09fe7ae19522bacf3889fc300fc9 by Sven Gothel
GlueGen Struct [9b]: Add unit test for fixed 'void*' regression commit eec3f21c3597ff9bf9760a06e00dd341214ea90d

See impact to T2_InitializeOptions struct fields:
- 'void* Reserved1' shall be ignored (*this is the regression fix*)
- 'void* Reserved2' will be taked due to config 'Opaque long T2_InitializeOptions.Reserved2'
- 'T2_CustomFunc CustomFunc2' will produce a member function call as previously
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
Commit 601399a1b7c9c66866716a8629098698dea49f38 by Sven Gothel
GlueGen Struct [13]: Adopt GlueGen_Mapping.md to changes, added `Struct Java Signature Examples` w/ Java API Doc snippets
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 9dd35877f28f5d3dce5e1817edd33bb8f6dbbe36 by Sven Gothel
Bring back produced html5 standalone files, having fixed pandoc usage.

See my pandoc-buttondown git repo <https://jausoft.com/cgit/users/sgothel/pandoc-buttondown-cgit.git/about/>

Latest config <https://jausoft.com/cgit/users/sgothel/pandoc-buttondown-cgit.git/commit/?id=fb38ada0c8d71a2b26bd3ee9d075acce84d76b2c>
fixed creation of standalone html5 files.
The file was addeddoc/GlueGen_Mapping.html (diff)
The file was addeddoc/JogAmpMacOSVersions.html (diff)
The file was modified www/index.html (diff)
Commit 6f7bbc15ff19640396ade377a1b2c508e67f98da by Sven Gothel
CPP Enable Pragma Once: Use default jcpp branch as its merged now
The file was modified .gitmodules (diff)
Commit 1159dadbdca861e4a6dd47e9da3ccb47ec15f4a3 by Sven Gothel
CPP Enable Pragma Once: Add GlueGen.run(..) debug output w/ all paramter
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
The file was modified src/java/com/jogamp/gluegen/structgen/CStructAnnotationProcessor.java (diff)
Commit 7825c4c053e0755e5dc0aa20127914887efa75e4 by Sven Gothel
CPP Enable Pragma Once: Default is 'true', since usually all compiler and APIs do support this feature
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
The file was modified src/java/com/jogamp/gluegen/structgen/CStructAnnotationProcessor.java (diff)
Commit 195bf966e4946ee9e80cd7aec68685218ad7a777 by Sven Gothel
CustomJNICode: Fix/complete commit d7bc10d7ff0e3a30d74c4e4c439230f3983bcfb4: Add emitCustomJNICode(..) for JavaEmitter.endFunctions() not just structs and fix the JNI-c stub code
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/test1-CustomJNICode.cfg (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/test1-CustomJavaCode.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test1-CustomJavaCode.java.stub (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test1p2-CustomJNICode.c.stub (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1-common.cfg (diff)
Commit 6aec5c5274d0ffb6662fdc53671b58df23850d89 by Sven Gothel
CustomJNICode: Add missing (separated) test1p1-CustomJNICode.c.stub
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test1p1-CustomJNICode.c.stub (diff)
Commit fd8ebf543ecc16233c0027c5a38701c11be548c7 by ferymathieuy
fix(cli): Fix disablePragmaOnce option

Option set enablePragmaOnce to true instead false
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
Commit b939d0e0555b0fe0e3609d6d867941b9aacf0e6f by Sven Gothel
CPP Enable Pragma Once: Remove cli '--enablePragmaOnce' option as it is enabled by default
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
Commit b08c609647f6280ddcd1329c40da1fe23d34c4e6 by Sven Gothel
GlueGen Struct [14]: Update doc/GlueGen_Mapping.md

Completing a few cases and fix some signatures in table
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit f783788e21f40a4a429221dad416a79586429eb4 by Sven Gothel
www/index.html: Copy Documentation section into main text for visibility
The file was modified www/index.html (diff)
Commit 49e5000347543559867a45f1d1b330b6086d7a32 by Sven Gothel
Doc: Manual: Adding disclaimer being slightly outdated and hint to GlueGen_Mapping document
The file was modified doc/manual/index.html (diff)
Commit 32db4ef66cacc4a6f01bd6b36f8cda96acb7ed38 by Sven Gothel
GlueGen Type: Use virt getTargetType() for ArrayType dropping getElementType(); Rename getBase{Elem ->}Type() to align with getTargetType()
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/PointerType.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/StructLayout.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
The file was modified src/java/com/jogamp/gluegen/MethodBinding.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/ArrayType.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit f7f554208c024280f1929df79bdbb83c758b8b49 by Sven Gothel
doc/GlueGen_Mapping.md: Place `Struct Setter Pseudo-Code` above 'Signature Table' and add a brief signature to mapping description to the former
The file was modified doc/GlueGen_Mapping.md (diff)
Commit b9dc722d689760bf85628edd8766dc6cd2360c8e by Sven Gothel
GlueGen Struct [15]: Add FunctionPointer getter and setter support w/ documentation
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test2.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified make/build-test.xml (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BindingJNILibLoader.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified make/scripts/runtest.sh (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 65e9c14e1566d5bfa88435d460c699c2a8fd23b7 by Sven Gothel
GlueGen Struct [15b]: FunctionPointer: Drop is<FuncName>Null() -> use get<FuncName>()
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2.java (diff)
Commit 3d6003fcada35d91c0d865ad0f4edb1da3ed8b8d by Sven Gothel
GlueGen junit test2.h: Add an anonymous struct pointer w/ opaque long config
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
Commit 10433928d69e58dc6a6b99e9c0a9b0a2669db56a by Sven Gothel
JavaEmitter.typeToJavaTypeImpl(): Add targetType in GlueGenException and remove '"' in message
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit df5b63babeec8a9de0ab22a917bbd6c192a2ac0f by Sven Gothel
GlueGen Test: Test2 -> Test2FuncPtr
The file was modified make/scripts/runtest.sh (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test2.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test2FuncPtr.java (diff)
Commit 3f50232fae03c65d7d84a6ca1e2a7b83cefde6ae by Sven Gothel
NIO NativeBuffer, {Element,Pointer}Buffer: Add limit, clear and flip; Arrange wrap/deref arguments equal; Add equal set of absolute get/set methods

Completing API to simplify usage by generated code.

All absolute get/set method check arguments itself and against limit(), allow to drop checks in generated code (size).
The file was modified src/java/com/jogamp/common/nio/AbstractBuffer.java (diff)
The file was modified src/java/com/jogamp/common/nio/PointerBuffer.java (diff)
The file was modified src/java/com/jogamp/common/nio/NativeBuffer.java (diff)
The file was modified src/java/com/jogamp/common/nio/ElementBuffer.java (diff)
Commit f90a42bd693ab9d451902e69ad86359fae2510dc by Sven Gothel
GlueGen: Type, JavaType: Align getSignature(..) output
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
Commit 9e61409658358834c2ba26c69c3efcbb5755c128 by Sven Gothel
GlueGen: Type: Have get{Base,Target}Type() stop at isFunctionPointer(), enhance API doc; Add getArrayBaseOrPointerTargetType() and getTargetFunction()

Added getArrayBaseOrPointerTargetType() returns getBaseType() for arrays or getTargetType() for pointer,
i.e. stops traversing if an elementType is a pointer and returns the elementType as target-type.
This resolves 'int* intPtrArray[10]', but also simplifies all cases of 'int** intPtrPtr' and 'int intPtr[10]' etc.

Since get{Base,Target}Type() returns the functionPointer, getTargetFunction() allows to retrieve the actual target function type.
The file was modified src/java/com/jogamp/gluegen/cgram/types/Field.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/PointerType.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/ArrayType.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/FunctionType.java (diff)
Commit 10842e888d1367475019f33bc651671453b31bd2 by Sven Gothel
GlueGen: JavaConfiguration.typeInfo(..): Clarify DEBUG_TYPE_INFO output
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 829d69ca42d2022790b136a5f689c34919a7c775 by Sven Gothel
GlueGen: JavaConfiguration.promoteTypeInfo(): Fix primitive pointerDepth, i.e. only pass numPointersStripped w/o adding info.pointerDepth()
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 23f4c6347ea24cf619dba573e83790e73d81d5ad by Sven Gothel
GlueGen Struct [16]: Add support for pointer-pointer and function-pointer values

See documentation and unit test test2.h, Test2FuncPtr.java and Test3PtrStorage.java
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test3PtrStorage.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified make/scripts/runtest.sh (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2FuncPtr.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 69d9f10bb1c99cba53869f2b019d5227446622e2 by Sven Gothel
GlueGen: Expose CMethodBindingEmitter.getJNIMangledArgs() as a public static to be reusable
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 7a4a0aea28729eabf1d44f58b0cfa4255f160992 by Sven Gothel
GlueGen: Rename GlueEmitter.getConfig{uration->}() and drop JavaEmitter.getConfig(), cleaning up API usage
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/DebugEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
The file was modified src/java/com/jogamp/gluegen/GlueEmitter.java (diff)
Commit 12ed5d03a26997c185474e992ad93ec99ec3baa1 by Sven Gothel
GlueGen Fix ProcAddressCMethodBindingEmitter.jniMangle(..) override: Use renamed {jniMangle->getJNIMangledArg}(..)
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java (diff)
Commit 069c5f69d22c8979728149a51a089b52712cac5c by Sven Gothel
GlueGen: Add JavaEmitter(JavaConfiguration) ctor
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit fd1c691c2e11e1dcfc6f84143e5152c5cd14b45b by Sven Gothel
JavaEmitter.generateArrayGetterSetterCode(): Place elemCountExpr null check where it could occur -> non-opaque, non-primitive array case
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 42a1f8c8bdb34242f422d24c4ad1d67a1e7ffd25 by Sven Gothel
GlueGen: Fix Type.getSignature(..): Test for isFunctionPointer() to elaborate on FunctionType as getTargetType() only retruns a function-ptr and no more a function-type.
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
Commit d55eab966968dfff6eac0db0445a0dbfbfb96240 by Sven Gothel
GlueGen FunctionType: Expose toString(..) w/ 'isPointer' argument
The file was modified src/java/com/jogamp/gluegen/cgram/types/FunctionType.java (diff)
Commit c54c5699c752fcf2cee19ef9dc21cd4acb5aa6cd by Sven Gothel
GlueGen Add JavaType.forObjectClass()
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
Commit b9bddbd7a75e7fa9812fdcc455a0c4857c3e9990 by Sven Gothel
GlueGen FunctionSymbol: Simplify ctor reusing main-ctor; Be always reachable via type(def)name, ctor: addAliasedName( type.getCName() )
The file was modified src/java/com/jogamp/gluegen/cgram/types/FunctionSymbol.java (diff)
Commit 15ed242971142e0726e60271172266515533e1f4 by Sven Gothel
GlueGen JavaConfiguration: Add 'JavaCallbackDef <funcion-pointer-typedef-name> [user-param-idx]'

Define a JavaCallback, enacted on a function-pointer argument `T2_CallbackFunc` and a user-param `void*` for Java Object mapping

Example:
  JavaCallbackDef  T2_CallbackFunc 2
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 7caf66ccae2dea53b82fb6552cb9144d4146259f by Sven Gothel
GlueGen JavaConfiguration: Add List<Integer> stringArguments(final AliasedSymbol symbol)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 5a130ab0c6db44225692e362e41e7b45481f9392 by Sven Gothel
GlueGen JavaCallback: Add preliminary implementation (WIP): Produces proper interfaces, TODO implementation

Note: JavaCallbackDef is commented out on test2.cfg example, since implementation is missing.
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit ed49b01838f3c07fa7a997b1f758ce2c983f49f7 by Sven Gothel
GlueGen JavaCallback: Add more related documentation
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
Commit 90b86c62270c494d2422dabc2879e59e063b535c by Sven Gothel
GlueGen JavaType: Add new nature 'String clazzName': Future (not yet generated or existing) Class objects (existing at runtime)

New nature can be queried via isNamedClass().

Cleaned up equals() and completed hashValue() etc.

Ctor validation ensures exactly one nature is set!
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
Commit 93c63bd880b6bc8a85a0057112b5065b312af1db by Sven Gothel
GlueGen JavaCallback: Use new JavaType nature 'named-class', denoting the generated callback interface mapping the callback function.

This passes the jobject for the callback function/interface and the userParam (from 'void*')
down to the native implementation.

TODO: Add specific native implementation for JavaCallback,
wrapping the jobject's into a native struct as user-param
and a universal C-function as the native callback to dispatch
the call to the java method with known arguments.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 68911f778039bbf08b5afbffd536b4cdacd33032 by Sven Gothel
GlueGen JavaCallback: Expose getJNIMethodDescriptor() for JNI mangled method names, used in CMethodBindingEmitter; Use JavaCallback's function-pointer-type capital-name as simple-class-name and its FQN for JNI resolution.
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
Commit 4d884db4e08ce9911871d3bdcf378041cde584fd by Sven Gothel
GlueGen JavaCallback: Move JavaCallback into JavaConfiguration, accessible across *Emitter (needed for CMethodEmitter as well); Add JavaCallback.methodSignature to be passed to native function later on to find the callback jmethodID
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 58712fb3a386ca6327b71218bab6e4b218da36a8 by Sven Gothel
GlueGen JavaCallback: Add JavaCallback.methodSignature to JNI arg-list and pass value at invocation, allowing to find the jmethodID of callback
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
Commit 9be1305636daa633a7219e102b22a4ffcf277690 by Sven Gothel
GlueGen Struct [17]: Handle void pointers, i.e. `void*`, within a struct as `Opaque` configured pointer-types

.. includes cross-ref'ed doc and unit test
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2FuncPtr.java (diff)
Commit 9f69f8b60b9fdc80076e20f303252ddd35b97ccf by Sven Gothel
GlueGen doc/GlueGen_Mapping.md: Mentiond OO-Style API mapping and add section for it
The file was modified doc/GlueGen_Mapping.md (diff)
Commit ce542531f4cb6fe2bf37f3926ea869722e5acf7d by Sven Gothel
GlueGen LibraryOnLoad Config: Generate `JNI_OnLoad(..)` for dynamic and `JNI_OnLoad_<LibraryBasename>(..)` for static libraries and `JVMUtil_GetJNIEnv(..)` to resolve the `JNIEnv*` as used by JavaCallback
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/CCodeUnit.java (diff)
Commit a1b107dd3fbe2070a1e667d8d7702912b0af7071 by Sven Gothel
GlueGen: Move [de]captializeString(..) JavaEmitter -> static in CodeGenUtils
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CodeGenUtils.java (diff)
Commit 809a7f84fcada7fbde8b7d0c226b78492fbfc616 by Sven Gothel
GlueGen CMethodBindingEmitter: Refactor emitBodyReturnResult() -> emitBodyMapCToJNIType(): Reuse to converting any C-type argument to java JNI type (i.e. native callback to JavaCallback)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit a83dad9963b394ac3e7bb193c6da7d9a5004a40e by Sven Gothel
GlueGen FunctionType: Factor out getParameterList(..) from toString(..) and drop 'void' and use typedef-name; MethodBinding: Add getCParameterList(..) and getJavaParameterList(..) for general usage similar to FunctionType.getParameterList()
The file was modified src/java/com/jogamp/gluegen/CodeGenUtils.java (diff)
The file was modified src/java/com/jogamp/gluegen/MethodBinding.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/FunctionType.java (diff)
Commit 1d66739e09899cb90888c8fe34aba339511aa656 by Sven Gothel
GlueGen ProcAddressCMethodBindingEmitter.jniMangle() override: Only add additional params if produced name containes '__', i.e. JNI mangled parameter
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java (diff)
Commit 6591f1fef419841660311bbb554aeda7b267c9a7 by Sven Gothel
GlueGen JavaCallback: 1st Working Draft: Changed 'JavaCallbackDef' config, added code generation incl. native to Java dispatch and resource management

Tested via Test4JavaCallback.java (using test2.[hc]).

Please read the GlueGen_Mapping.md as well as Test4JavaCallback.java .

+++

Some implementation details:

JavaConfiguration maps JavaCallbackDef to JavaCallback set-function and maintains a list.
JavaCallbackDef itself holds all configured details.

JavaConfiguration also maps JavaCallbackInfo to JavaCallback set-function.
JavaCallbackInfo itself holds all compile time information, as produced by JavaEmitter.beginFunctions(..).
This extends JavaCallbackDef and avoid repetetive computation for the callback-function-type and its MethodBinding,
parameter indices for the callback interface and userParam, etc.

CMethodBindingEmitter: Native callback to Java dispatch
- The JavaCallback setter function creates a native 'UserParam' struct instance,
  which holds the callback-interface-jobject, its callback-jmethodID and
  the userParam-jobject for invocation of the actual JavaCallback interface method.

- To produce the C-Type -> JNI-Type conversion, An internal CMethodBindingEmitter instance
  for the native-callback function binding is created inside the CMethodBindingEmitter of the callback setter method.

  It is being used to map the types to JNI within the generated native callback function,
  passed to the actual JavaCallback method.

JavaMethodBindingEmitter: Native callback to Java dispatch
- The JavaCallbacl setter passes the callback-interface-object, the userParam-object and the
  callback-method-signature (to have the native method retrieve the jmethodID).

- It receives the native pointer of the native `UserParam` struct instance,
  which gets mapped to the userParam-object. (*TODO: Refine ownership + release*).
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified make/scripts/runtest.sh (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
Commit fb86a3c6f68f3788b02a8e8209a697f50c25dc19 by Sven Gothel
Doc: Align GlueGen_Mapping.md intro w/ README.md and www/index.html
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified README.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified www/index.html (diff)
Commit dc5061e2d31f01a875b27e722835e2e8cfa67c88 by Sven Gothel
Doc: www/index.html: Fix JOGL UML link
The file was modified www/index.html (diff)
Commit d5304ac167fc406f682730c40fef2c880a44672e by Sven Gothel
Doc intro: Fix LibraryOnLoad using generic LibraryBasename
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified www/index.html (diff)
The file was modified README.md (diff)
The file was modified README.md (diff)
Commit 4e9d0edc3810d36ffe1660e6ac17d1dc547ea7d7 by Sven Gothel
GlueGen JavaCallback: Set-Callback: Ensure a previously mapped 'userParam' instance is released before binding new one; Add test changing callback function.
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
Commit e898caec411fc2f313aabc188a22099e26664080 by Sven Gothel
Test4JavaCallback: Just rename myUserParam -> myUserParam01 for future tests..
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified .classpath (diff)
Commit b35d62425311ec50e6c80b07372bc411aa287bb4 by Sven Gothel
GlueGen FunctionType/MethodBinding: get*ParameterList(): Use a more flexible way via a ParameterConsumer visitor, also usable for other iterative parameter generator
The file was modified src/java/com/jogamp/gluegen/cgram/types/PointerType.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
The file was modified src/java/com/jogamp/gluegen/CodeGenUtils.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/FunctionType.java (diff)
The file was modified src/java/com/jogamp/gluegen/MethodBinding.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/FunctionSymbol.java (diff)
The file was modified src/java/com/jogamp/gluegen/cgram/types/Type.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit a73c992290930e617c78241bae9fe20cb18a01a9 by Sven Gothel
GlueGen JavaCallback: Resolve key mapping of callback and associated resources via 'JavaCallbackKey' config and custom `SetCallback-KeyClass`

Updated unit test and doc accordingly.
Unit tests handle OpenAL's AL_SOFT_callback_buffer and AL_SOFT_events.

Tested global scope (no key, default) and 1 key (default) and 1 key (custom class).

Added more query functions, which all only take the `SetCallbackFunction` key arguments as specified.

Cleaned up JavaCallback* config class field naminig scheme.

Added 'synchronized (..Map) { }' block in crucial `SetCallbackFunction`,
rendering implementation thread safe.
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit dd5829a4fed25fbad766361b87c65076ef596ded by Sven Gothel
GlueGen Intro: Add section about its comprehensive runtime library, shorten the JNI_OnLoad section
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified www/index.html (diff)
The file was modified README.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
Commit 6200b9122a90ef8c2af8b9205b4b1c90b1aa5074 by Sven Gothel
GlueGen JavaCallback: Release the associated data (natively) only after the actual toolkit setCallback call

.. to avoid a potential race condition
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
Commit 8766fcfdce4dd864fe6764b063a0f9a4b17327c1 by Sven Gothel
GlueGen JavaCallback: Only produce default 'Key' class if keys are used, expose 'Key' to public and use it. Expose release*() and get*Keys() methods

Further we use a dedicated lock Object used in the Java implementation.

TODO: Native static callback dispatch code shall
- (also) acquire the lock
- handle case where the data has been released already
to render this solution thread-safe and data-race free
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit df0895828e957d97f38510da36eade7a60691d96 by Sven Gothel
GlueGen JavaCallback: Use `SetCallback-KeyClass` if manually specified, even if no keys are defined!
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 679ce37046c3c68b97e56fb70ea7b316e9dba3ad by Sven Gothel
GlueGen JavaCallback: Native callback: Check ObjectRef validity and synchronize (MonitorEnter/Exit) with same Object of Java impl. -> thread safe
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
Commit be2d31199f95ddbfa02530a021c8ab9611018f27 by Sven Gothel
GlueGen JavaCallback: Emphasize all methods are thread-safe
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 760fb65d1d65fcac927e28de442f3b9bfd3d58f0 by Sven Gothel
doc/GlueGen_Mapping.md: Typo
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 98dca8cd3cffd3f9dc1c920bbe8e6349877447b7 by Sven Gothel
GlueGen JavaCallback: Document native callback use-after-free potential (caught), zero-mem @ release
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 1caceb4e72b2e99c5c458d37ebced0c51fe6bb70 by Sven Gothel
GlueGen JavaCallback: Native Callback: Reduce 'look-ahead' of read-after-free to critical lockObj only
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit e999ece8b0cd2ec440314f9a4c20812c694991ae by Sven Gothel
GlueGen Struct [18]: Drop redundant 'static get*ElemCount() { return 1 }` for: isPrimitive && !isPointer && staticElemCount && maxOneElement
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2FuncPtr.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 3ee4a042aee86657128b834dad553baf83834612 by Sven Gothel
CMethodBindingEmitter JavaCallback: Use a friendly readable basename for errors
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 88346aae69cc12c7f6932152697a854039517aa7 by Sven Gothel
GlueGen JavaCallback: CMethodBindingEmitter: Check lockObj for NULL before GetObjectRefType(), avoid certain (older) Hotspot issues
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 9b9aa128d92e9512cb00559e99dce9c8de726ed7 by Sven Gothel
GlueGen JavaCallback: CMethodBindingEmitter: Check, describe & clear exception if occurring - we must assume async off-thread source in general

Covered by unit tests now
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 6d53b4b1dd07006e7af0e540b2c2e6ee6e1746d5 by Sven Gothel
GlueGen JavaCallback: Unify native 'T_JavaCallbackGlueData' typedef struct
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CCodeUnit.java (diff)
Commit a599b852a041ba3d80b43981589ac1390979dac2 by Sven Gothel
GlueGen JavaCallback: Revised: Static Java callback dispatcher, dropping native heap, support Struct UserParam ...

Implementation now generates a static Java callback dispatcher for each defined SetCallbackFunction, which gets invoked by the generated native static counterpart with all arguments required.

The static callback utilizes its own synchronization for thread-safety and fetches the required data set stored at SetCallbackFunction to dispatch the call to the users' CallbackFunction.
In case the callback has been removed already, the static callback simply bails out quietly.

The native code does not create, release or manage heap memory and therefore is considered safe.

+++

Further Struct Type UserParam are now supported including Heterogeneous UserParam mapping (read GlueGen_Mapping.*).

+++

Cleaned up code by extracting all JavaCallback emitter code into JavaCallbackEmitter class in one place,
leaving JavaMethodbindingEmitter and CMethodbindingEmitter mostly in their original stage (non-convoluted).

In this regard, I had to refactor a few function, i.e. moving CMethodbindingEmitter.getJNIMangledArg(..)
into JavaType.appendDescriptor(..) and JavaType.appendJNIDescriptor(..) while reusing the toJNIMethodDescriptor(..) conversion.

Test4JavaCallback covers and passes all cases.
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was addedsrc/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
The file was modified www/index.html (diff)
The file was modified src/java/com/jogamp/gluegen/CCodeUnit.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/java/com/jogamp/gluegen/FunctionEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressJavaMethodBindingEmitter.java (diff)
The file was modified README.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressCMethodBindingEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
Commit 8cc90ef6a61b9686cc287bf34a3fcba924276c01 by Sven Gothel
GlueGen JavaType.appendDescriptor(..): Fix regression: Must return a vanilla descriptor ('/' not '_') i.e. non JNI method-name descriptor to avoid double conversion
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
Commit 0c4067379e5e12617b9a4530e607ca34762b54e3 by Sven Gothel
doc/GlueGen_Mapping.md: Quote `void*` correctly ..
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit ae4c2c3e59ed92caa6f0e18360b7236e50899bf6 by Sven Gothel
GlueGen JavaCallback/LibraryOnLoad: Always include the `libraryBasename` agnostic 'emitJNIEnvDecl()' (declaration) in JNI code; Detach the thread from the JVM if newly attach in callback!
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/CCodeUnit.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 5ceca8550b82591a6a2661a26d3e0d5e6e3e15ff by Sven Gothel
GlueGen: Add 'PascalString' string semantics (length + value-ptr), added prelim code for JavaCallback use-case emitBodyMapCToJNIType()

It is common in toolkit APIs that a string might not be passed as a 'nul' terminated (EOS) C string,
but as a Pascal string with a given length argument.

A C string is specied as
  ArgumentIsString alEventCallbackInject 3
while allowing multiple indices ..

A Pascal string can be specified as
  ArgumentIsPascalString ALEVENTPROCSOFT 3 4
while allowing multiple indice-tuples for length and value ..

The tuple consist of the length agrument-index first (usually an int)
followed by the value argument-index (usually a 'char*').

+++

CMethodBindingEmitter.emitBodyMapCToJNIType(), where PascalString is implemented,
is currently being used for
- JNI return statement (no PascalString impact possible)
- JavaCallback C type -> JNI type, PascalString impacting
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
The file was modified doc/manual/index.html (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 56d3cbcf7a6a6f83706962dd24846906fa2bb420 by Sven Gothel
Manual: Refine `ArgumentIsPascalString`
The file was modified doc/manual/index.html (diff)
Commit 5b867d0f90a43a02e1fbd03fb1ed588a391806eb by Sven Gothel
GlueGen JavaCallback: Fix `staticCBClazz*` initial setup (only), using a NewGlobalRef() for jclass (not required for static jmethodID)

Also use a longer jclass argument name 'clazz' -> 'staticCBClazz' to avoid potential collisions
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
Commit 3ed3e9887c459169b807165c9df2ae2bc2990a31 by Sven Gothel
GlueGen JavaCallback: Remove ambiguity: Config JavaCallbackDef/JavaCallbackKey: Always define both parameter indices; emitJavaStaticCallback(): Use cbFuncBinding and cbFuncKeyIndices from callback parameter to build key
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
Commit 4267e223e33acdc098cc5b4371765f8e31b96eff by Sven Gothel
GlueGen JavaCallback Doc: Remove reasoning (avoiding ambiguity) to CallbackFunction parameter index
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 701311d6fc507b1e21681dd60c6851fbc50c2304 by Sven Gothel
GlueGen JavaCallback: Add capability to have UserParam as (part of) key

Resolves use case where UserParam reflects e.g. a context (AL_SOFT_events)
and will be (part of) the key mapping.

Implementation required an additional userParamID -> userParam mapping for default Object/ID usage.

Added 2 test cases.
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2-CustomJavaIfCode.java.stub (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2-CustomJavaImplCode.java.stub (diff)
Commit 63ed5f7676bc46ee03db1a6d27c5ce86fcf6a597 by Sven Gothel
Manual: Fix ArgumentIsPascalString
The file was modified doc/manual/index.html (diff)
Commit 0ea6688e41c31b0e2c8dba73582c935562885b44 by Sven Gothel
GlueGen JavaCallback: Add optional custom 'Callback-UserParamClass` for non-compound `UserParam` types to have more clarity in resulting API
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2-CustomJavaImplCode.java.stub (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2-CustomJavaIfCode.java.stub (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
Commit 60277196f721875a4114e065fdf1ba24521811be by Sven Gothel
doc/GlueGen_Mapping.md: Typos 'UserParam' -> 'UserParamClass'
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit a03df850033d11386471534840a83bbac81304df by Sven Gothel
doc/GlueGen_Mapping.md: Typos 'UserParam' -> 'UserParamClass' (2 more occassions)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit fe21c87b24842d67df686b7c48fa36ed65a9afc9 by Sven Gothel
doc/GlueGen_Mapping.md: Using 'UserParamClass' .. grammar (3 commits for 1 discount today)

Cough cough .. should have reviewed the whole thing once. Must be the summer distraction causing premature commits. Sorry about that :)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 380969bbf0b7746ab245b7d7d177243092fb2c34 by mfery
feat(generation): Add setter generation for not constant and not opaque compound attribute
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test1.h (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
Commit ad69716fda64b517c33ed847c4b215ea398aac99 by mfery
feat(callbackGenerator): Add basic management of callback without userData
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaType.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
Commit 165e3b87b2d3abbb83e9fe5421ac63931b41c793 by mfery
doc/GlueGen_Mapping.md: Add some documentation with JavaCallback without userData
The file was modified doc/GlueGen_Mapping.md (diff)
Commit 9bf13be7d8a144be18dd313e8ed7658f25b9c1d0 by mfery
feat(arrayAccessor): Allow to use ReturnedArrayLength with getter associated with field with name in PascalCase or camelCase
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 1e78cc429f148aa200ae487bacb6d4a9b6b7c8d9 by Sven Gothel
CMethodBindingEmitter.emitBodyMapCToJNIType(..): Add proper intendation to NIO ByteBuffer generation (isNIOBuffer || isCompoundTypeWrapper)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 910ce385d5e56eeb1fd7f81678042f19f76b1870 by Sven Gothel
JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode}(): Group 'userParamDefined' case (cleanup)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
Commit 711533cef82cab317662e84f1d1719bdbeca4253 by Sven Gothel
JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode, emitJavaCallbackBodyPassJavaArguments}(): Use capitalized sub-string 'baseArgName' for (static) callback related entities
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
Commit a51c63b8b054eec3393d4c340cf3cefe561a01b1 by Sven Gothel
JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode, emitJavaCallbackBodyPassJavaArguments}(): Fix exclusion of ad-hoc compound conversion for userParam

Passed CMethodBindingEmitter denotes the callback-function, including the binding.

The new iteration to handle the ad-hoc compound conversion,
introduced in commit ad69716fda64b517c33ed847c4b215ea398aac99 'callback without userData',
iterates over the callback-function argument list.
Hence it shall only exclude the ad-hoc compound conversion
if index != info.cbFuncUserParamIdx.

Dropping the addition exclusion 'i != info.setFuncUserParamIdx'.
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit e9a2294b3f18bb4c4f38347ccf347058cb4642b3 by Sven Gothel
JavaCallbackEmitter.emitCSetFuncPreCall(): Drop redundant arg 'CMethodBindingEmitter jcbFuncCMethodEmitter', use local 'info.cbFuncBinding'

Was added in commit ad69716fda64b517c33ed847c4b215ea398aac99 'callback without userData',
while adding ad-hoc compound conversion.
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit e729d53c8384757b6a5ada2491c7cd4ad07c8bfe by Sven Gothel
JavaCallbackEmitter.emitJavaCallbackBodyPassJavaArguments(): Drop redundant arg 'MethodBinding jcbFuncCMethodBinding', use local 'info.cbFuncBinding'

Since emitJavaCallbackBodyPassJavaArguments() is private now,
only use case is to handle info.cbFuncBinding and we can drop the redundant argument.

Similar to cleanup commit e9a2294b3f18bb4c4f38347ccf347058cb4642b3
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
Commit 88941c41dbb134984fd0857db9ea0729d9306bbb by Sven Gothel
JavaCallbackEmitter.emitCAdditionalCode(): Use `info.cbFuncBinding` locally and passed 'jcbFuncCMethodEmitter' only to invoke CMethodBindingEmitter.emitBodyMapCToJNIType(..)

Passed 'jcbFuncCMethodEmitter' only used to access CMethodBindingEmitter.emitBodyMapCToJNIType(int, boolean), a non-ideal hack! (FIXME)

General processing shall use the local `info.cbFuncBinding`.
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
Commit d4e8ecc3b4f68b86d95ec951971a0fea20217988 by Sven Gothel
JavaEmitter: Encapsulate 'needsJavaCallbackCode' query in JavaConfiguration. TBD: Is this even required?

- needsIntermediateOperation -> needsJavaCallbackCode
- Use JavaConfiguration.requiresJavaCallbackCode(..)

TBD: Is this even required?
As far as I see, the non-userParam callback case adds no additional code requirements.
Both, callback with and without userParam shares same code path
and the respective native static fields.
Only that the non-userParam code path adds additional native static fields,
but all code sections are produced in both cases.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 3e249796e7b42033072aeda438d987601939db44 by Sven Gothel
Fix & Enhance Test4JavaCallback for non-userParam chapter12*: Fix ad-hoc compound equals and add chapter12b for additional parameter with different order

- ad-hoc compound equals must compare value, since native code creates a new class instance from native struct

- Add additional case with addition callback argument for further validation
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
Commit b08c61935daa0191f4ec59c6998bc56dae18e54d by mfery
feat(callbackGenerator): Prevent generation of CallBack interface if setter related isn't present
The file was modified src/java/com/jogamp/gluegen/procaddress/ProcAddressEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/DebugEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/GlueEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
Commit 97b574914f7f961458f6668495c2fef70b910549 by Sven Gothel
CMethodBindingEmitter.emitBodyPassCArguments(): Either pass STRING_CHARS_PREFIX or javaCallbackEmitter.emitCOptArgumentSuffix(..)

We only produce one variant in code.

Use case: String type as userParam (barely tested and not useful)
The file was modified src/java/com/jogamp/gluegen/CMethodBindingEmitter.java (diff)
Commit 1250d960d8bf2ee9ab8726a18a837115d6930815 by Sven Gothel
JavaEmitter.bindFunction(): Add JavaCallback userParam non-void case (i.e. 'String')

Use case: String type as userParam, barely tested and not useful.
However, let's pass through all cases in our code.

Added LOG INFO for mapped types.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
Commit 3ad38748d7ef50a3631506eabcd3ae3417faa84d by Sven Gothel
JavaCallbackEmitter.emitJavaKeyClass(): Use directBufferAddress for compound types in equals and hashCode, i.e. use memory identity

Use case is having a compound-type as userParam, which also acts as key, see MessageCallback13, Test4JavaCallback.chapter13().

The Java compound instance is re-created using the actual identical native memory (address),
which has been stored or passed in the native toolkit.
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.c (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
Commit 927bbc7160a812bb29c0e7120d4a3009bfb13bbf by Sven Gothel
JavaCallback: Remove non-UserParam JavaConfiguration.requiresJavaCallbackCode()

Method was encapsulated in commit d4e8ecc3b4f68b86d95ec951971a0fea20217988
and questioned whether it is required.

The non-userParam callback case adds no additional code requirements.
Both, callback with and without userParam shares same code path
and the respective native static fields.
Only that the non-userParam code path adds additional native static fields,
but all code sections are produced in both cases.

Passed all unit tests.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 9b0335ea91c39469b586b4005dfae35d4b2cc84b by Sven Gothel
doc/GlueGen_Mapping.md: Shorten UserParamIndex '<0' to disable 'UserParam' and produce html page
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
Commit 2abb40b0ca9a6a06bdbe3e66b4235301ed15c693 by mfery
wip(test_case): Example of test case for issue related of 927bbc7160a812bb29c0e7120d4a3009bfb13bbf

Almost done
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseTest2FuncPtr.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2p2.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2p1.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test2p2FuncPtr.java (diff)
The file was modified make/scripts/runtest.sh (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test3p2PtrStorage.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2-common.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test3p1PtrStorage.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test4JavaCallback.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test2p1FuncPtr.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseTest3PtrStorage.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test3PtrStorage.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test4p1JavaCallback.java (diff)
The file was modified src/antlr/com/jogamp/gluegen/jgram/JavaParser.g (diff)
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified make/build-test.xml (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test4p2JavaCallback.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2-gluegen.cfg (diff)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BindingJNILibLoader.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseTest4JavaCallback.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaCallbackEmitter.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/Test2FuncPtr.java (diff)
Commit 4a8f15d29120e7744eca75f6d99bae6a7431749e by Sven Gothel
Revert "JavaCallback: Remove non-UserParam JavaConfiguration.requiresJavaCallbackCode()"

This reverts commit 927bbc7160a812bb29c0e7120d4a3009bfb13bbf.
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 8b4d36e543a14c404c73942840f15a4d81d83990 by Sven Gothel
WIP JavaCallback Tests: Rename test2-gluegen.cfg -> test2-if.cfg
The file was modified make/build-test.xml (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2-gluegen.cfg (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/test2-if.cfg (diff)
Commit e52b7022e31022b92f4aaf5fb2e9457d767682c8 by Sven Gothel
WIP JavaCallback Tests: Fix: Link library Bindingtest2p1 against library test2 not test1
The file was modified make/build-test.xml (diff)
Commit 06318d44c94c494fe6862ac8cf97fca799d05800 by Sven Gothel
WIP JavaCallback Tests: Fix: test2-CustomJavaImplCode.java.stub must be 'IncludeAs' for both implementations, Bindingtest2p1Impl and Bindingtest2p2Impl
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2-common.cfg (diff)
Commit fbd065be8a5f36455a335c20549d729537f5d4b0 by Sven Gothel
WIP JavaCallback Tests: Fix typo in 'CustomJavaCode' Java class target name
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2p2.cfg (diff)
Commit 94c68465331b10f548727483437a3f3b575ee287 by Sven Gothel
WIP JavaCallback Tests: Fix Test4p2JavaCallback.chapter__TestLoadLibrary() issue loadBindingtest2p2() not loadBindingtest2p1()
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4p2JavaCallback.java (diff)
Commit 2e8b69496221f242fee762140418008a9a862d3d by Sven Gothel
GlueGen Code Unit Tests using a statically linked tool library do not need to load the tool library dynamically, hence dropped.

Just ensure GlueGen itself is initializes via Platform.initSingleton() in common BaseClass
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2p1FuncPtr.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test3p1PtrStorage.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4p1JavaCallback.java (diff)
Commit f0da1ec6f5ac68de4c1ede1fd54a71b656fe5d75 by Sven Gothel
JavaConfiguration.requiresJavaCallbackCode() shall return true for all JavaCallback cases no just non-userParam case

Additional body code for JavaCallback is required for methods it.
The file was modified src/java/com/jogamp/gluegen/JavaConfiguration.java (diff)
Commit 177ee444d1b86e6412f636d5f4e8f0695d418246 by Sven Gothel
Cleanup unit test class names: Try to start w/ 'Test', remove intermediate 'Test' for supporting, non-test classes
The file was removedsrc/junit/com/jogamp/common/net/AssetURLConnectionRegisteredTest.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseClass4JavaCallback.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseTest4JavaCallback.java (diff)
The file was removedsrc/junit/com/jogamp/common/net/AssetURLConnectionUnregisteredTest.java (diff)
The file was removedsrc/junit/com/jogamp/common/util/IntObjectHashMapTest.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseTest3PtrStorage.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseClass3PtrStorage.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/PCPPTest.java (diff)
The file was addedsrc/junit/com/jogamp/common/net/TestAssetURLConnectionRegistered.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseClass2FuncPtr.java (diff)
The file was removedsrc/junit/com/jogamp/common/util/IntIntHashMapTest.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/BaseTest2FuncPtr.java (diff)
The file was addedsrc/junit/com/jogamp/common/util/TestLongIntHashMap.java (diff)
The file was addedsrc/junit/com/jogamp/common/util/TestIntIntHashMap.java (diff)
The file was addedsrc/junit/com/jogamp/common/util/TestIntObjectHashMap.java (diff)
The file was removedtest/junit/com/jogamp/gluegen/StructAccessorTest.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java (diff)
The file was removedsrc/junit/com/jogamp/common/util/LongIntHashMapTest.java (diff)
The file was addedsrc/junit/com/jogamp/common/net/TestAssetURLConnectionUnregistered.java (diff)
The file was addedtest/junit/com/jogamp/gluegen/TestStructAccessor.java (diff)
Commit 0d3c2b630e06045013250547b3d0cb1bd9f99386 by Sven Gothel
Cleanup unit test class names (pt2): Try to start w/ 'Test', remove intermediate 'Test' for supporting, non-test classes
The file was modified src/junit/com/jogamp/common/util/TestLongIntHashMap.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4p2JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java (diff)
The file was modified src/junit/com/jogamp/common/util/TestIntObjectHashMap.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass3PtrStorage.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass4JavaCallback.java (diff)
The file was modified test/junit/com/jogamp/gluegen/TestStructAccessor.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2p2FuncPtr.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test3p2PtrStorage.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test3p1PtrStorage.java (diff)
The file was modified src/junit/com/jogamp/common/net/TestAssetURLConnectionUnregistered.java (diff)
The file was modified src/junit/com/jogamp/common/util/TestIntIntHashMap.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass2FuncPtr.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2p1FuncPtr.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4p1JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/common/net/TestAssetURLConnectionRegistered.java (diff)
The file was modified test/junit/com/jogamp/gluegen/StructValidator.java (diff)
The file was modified src/junit/com/jogamp/common/net/TestUri02Composing.java (diff)
Commit 05a931d587feb3116892f5b146b3a4bb2867e923 by Sven Gothel
Cleanup unit test class names (pt3): Try to start w/ 'Test', remove intermediate 'Test' for supporting, non-test classes
The file was modified make/scripts/runtest.sh (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2-common.cfg (diff)
Commit 287780236de7e3cea7ba826a76f720cf4501e4c0 by Sven Gothel
Add notes `Loading a MacOS Native Library's Dependencies` and use absolute path in unit test script for library-path
The file was modified make/scripts/runtest.sh (diff)
The file was addeddoc/misc/macos_nativelib_dependencies.md (diff)
Commit 9555288019afaf7f1b9eb73e02fe0d899d633292 by Sven Gothel
Minor cleanup (includes, spacing)
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test2p1FuncPtr.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test3p1PtrStorage.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass4JavaCallback.java (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/Test4p1JavaCallback.java (diff)
Commit 0e6d18c6b6d46b54e679ce0c44613e21e58245f2 by Sven Gothel
JavaCallback: Add Mathieu Féry's detailed git comment regarding 2abb40b0ca9a6a06bdbe3e66b4235301ed15c693; Updated GlueGen_Mapping.md

Original comment of commit 2abb40b0ca9a6a06bdbe3e66b4235301ed15c693
  wip(test_case): Example of test case for issue related of 927bbc7160a812bb29c0e7120d4a3009bfb13bbf

Revised comment taken from unmerged updated branch f6de3646acf0fdadf55708fd8a1c42fbd8663bc5
    wip(test_case): Example of test case for issue related of 927bbc7160a812bb29c0e7120d4a3009bfb13bbf

    Some short summary of modifications :
     * Add tests with each emitters for test2, but tests are shared and run for each emitters
     * Update JavaParser.g to allow parsing of bindings generated after test2 processing
       * Add basic management of generic type (But not yet retrieved inside classTypeSpec args)
       * Add basic management of annotations (with or w/o parameter(s)) (Retrieved in statement, classes and interfaces but not used)
     * Align lexer constants in JavaParser.g
     * Update JavaParser.g to allow fetching all inner classes and inner interfaces to allow excluding by ExtendedInterfaceSymbolsIgnore
     * Modify JavaConfiguration::requiresJavaCallbackCode because all callback need to force generation not only callback without user param
       * Functions not generated w/o JavaConfiguration::requiresJavaCallbackCode :
         * SetLogCallBack12a
         * SetLogCallBack12b
         * MessageCallback11b
         * alBufferCallback0
The file was modified doc/GlueGen_Mapping.md (diff)
The file was modified doc/GlueGen_Mapping.html (diff)
Commit 4ab62d5121afec50dcb975fcfabefd838861da28 by mfery
feat(generation): Fix CodeGenUtils.emitJavaHeaders

When both classExtended and interfaces are specified for given class space missing between classExtended and implements keyword
The file was modified src/java/com/jogamp/gluegen/CodeGenUtils.java (diff)
Commit 496df9c41332a0d606017f0df5ba08b02af0c992 by mfery
feat(generation): Fix generic parsing inside JavaParser.g to allow parsing of java callback implementation
The file was modified src/antlr/com/jogamp/gluegen/jgram/JavaParser.g (diff)
Commit 4c5f3d8e589016e17ac3f1aad6a5c26bc21efe2f by Sven Gothel
Bump jcpp (merged w/ jcpp upstream v1.4.14) and adopt to changes
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/BuildEnvironment.java (diff)
The file was modified make/build-test.xml (diff)
The file was modified make/scripts/runtest.sh (diff)
The file was modified .classpath (diff)
The file was modified jcpp (diff)
Commit 239b00c26cc3f24b7d9e334de8ac1bee849e05b1 by Sven Gothel
Drop PCPP, GlueGen exclusively uses JCPP; Adopt test case Test{P->J}CPP
The file was removedsrc/java/com/jogamp/gluegen/pcpp/ConcatenatingReader.java (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/pcpptest.h (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/TestPCPP.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/cpptest-included.h (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/pcpptest-included.h (diff)
The file was modified doc/manual/index.html (diff)
The file was modified make/scripts/runtest-secmgr.sh (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java (diff)
The file was modified make/scripts/runtest.sh (diff)
The file was removedsrc/java/com/jogamp/gluegen/pcpp/PCPP.java (diff)
Commit 07c57a0d36c375f55e93f0caf7dd57e7c0afe271 by Sven Gothel
TestJCPP: Add recursive-include test and include a header file starting with '-' and in a subdir containing a '-'
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/sub-inc/-cpptest-included2.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/cpptest-included.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java (diff)
Commit b5ec911572aa0c07228fcb02976a8e848cc90391 by Sven Gothel
ANTLR Syntax: Add debugging facility for GnuCParser.g and StdCParser.g
The file was modified src/antlr/com/jogamp/gluegen/cgram/StdCParser.g (diff)
The file was modified src/antlr/com/jogamp/gluegen/cgram/GnuCParser.g (diff)
Commit f8752c59945205b717c4b21ceeb4044ae9a0e9df by Sven Gothel
Bug 1450: Fix 'Number' rule, i.e. only consume positive numbers as `additiveExpr` and `unaryExpr` consume the '-' operator

n GlueGen commit 10032c0115f2794a254cffc2a1cd5e48ca8ff0b8 in branch JOGL_2_SANDBOX
Ken hacked in consuming a '-' prefix to have negative numbers covered by 'Number'.

This is wrong, as it breaks deduction of `additiveExpr` and 'unaryExpr' rules,
which want to consume '-' and '+'.
The latter is used to completely resolve constant expressions
starting from the 'constExpr' rule.

See ISO 9899:202x Programming Language - C
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf
The file was modified src/antlr/com/jogamp/gluegen/cgram/GnuCParser.g (diff)
Commit 5b6e6af3932ece0c656cf4438100f4e213ea91b6 by Sven Gothel
Bug 1450: Widen ConstantDefinition.isConstantExpression() to include 'patternCPPOperand'

i.e. all supported operands used for constant-expression of define macros.
The file was modified src/java/com/jogamp/gluegen/ConstantDefinition.java (diff)
Commit c30f0db4b785f21288f9cc5f7fd65393781d93c3 by Sven Gothel
Bug 1450: Be more verbose w/ JavaEmitter comment lines for enums and defines, include native expression
The file was modified src/java/com/jogamp/gluegen/JavaEmitter.java (diff)
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)
Commit 2ae7f2ea923aab662a0c273578456216bc8cd633 by Sven Gothel
Bug 1450: Add test snippets covering the issues: test2.h for Bindingtest2, TestJCPP and new TestCParser
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/cpptest_1.h (diff)
The file was removedsrc/junit/com/jogamp/gluegen/test/junit/generation/cpptest.h (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/TestCParser.java (diff)
The file was addedsrc/junit/com/jogamp/gluegen/test/junit/generation/cpptest_10.hpp (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/TestJCPP.java (diff)
The file was modified make/build.xml (diff)
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/test2.h (diff)
The file was modified make/scripts/runtest.sh (diff)
Commit a7e62d106b1ba89d0973e5ccb00982e8ae8df9e4 by Sven Gothel
Bug 1450: TestCParser: Enable test10_cc() w/o JCPP
The file was modified src/junit/com/jogamp/gluegen/test/junit/generation/TestCParser.java (diff)
Commit b3dd6410aad591ddaec4eddfb8d894893368a54a by Sven Gothel
GlueGen: 'from expression' -> 'with expression'
The file was modified src/java/com/jogamp/gluegen/GlueGen.java (diff)