aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | Bump jcpp (merged w/ jcpp upstream v1.4.14) and adopt to changesSven Gothel2023-08-085-18/+54
|/
* JavaCallback: Add Mathieu Féry's detailed git comment regarding ↵Sven Gothel2023-08-052-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Minor cleanup (includes, spacing)Sven Gothel2023-08-055-12/+1
|
* Add notes `Loading a MacOS Native Library's Dependencies` and use absolute ↵Sven Gothel2023-08-052-6/+44
| | | | path in unit test script for library-path
* Cleanup unit test class names (pt3): Try to start w/ 'Test', remove ↵Sven Gothel2023-08-052-10/+10
| | | | intermediate 'Test' for supporting, non-test classes
* Cleanup unit test class names (pt2): Try to start w/ 'Test', remove ↵Sven Gothel2023-08-0518-25/+25
| | | | intermediate 'Test' for supporting, non-test classes
* Cleanup unit test class names: Try to start w/ 'Test', remove intermediate ↵Sven Gothel2023-08-0510-0/+0
| | | | 'Test' for supporting, non-test classes
* JavaConfiguration.requiresJavaCallbackCode() shall return true for all ↵Sven Gothel2023-08-051-1/+1
| | | | | | JavaCallback cases no just non-userParam case Additional body code for JavaCallback is required for methods it.
* GlueGen Code Unit Tests using a statically linked tool library do not need ↵Sven Gothel2023-08-054-21/+4
| | | | | | to load the tool library dynamically, hence dropped. Just ensure GlueGen itself is initializes via Platform.initSingleton() in common BaseClass
* WIP JavaCallback Tests: Fix Test4p2JavaCallback.chapter__TestLoadLibrary() ↵Sven Gothel2023-08-051-1/+1
| | | | issue loadBindingtest2p2() not loadBindingtest2p1()
* WIP JavaCallback Tests: Fix typo in 'CustomJavaCode' Java class target nameSven Gothel2023-08-051-1/+1
|
* WIP JavaCallback Tests: Fix: test2-CustomJavaImplCode.java.stub must be ↵Sven Gothel2023-08-051-2/+3
| | | | 'IncludeAs' for both implementations, Bindingtest2p1Impl and Bindingtest2p2Impl
* WIP JavaCallback Tests: Fix: Link library Bindingtest2p1 against library ↵Sven Gothel2023-08-051-3/+3
| | | | test2 not test1
* WIP JavaCallback Tests: Rename test2-gluegen.cfg -> test2-if.cfgSven Gothel2023-08-052-1/+1
|
* Merge remote-tracking branch 'Mathieu_Fery/wip/test_case_callback_emission'Sven Gothel2023-08-0422-313/+902
|\
| * wip(test_case): Example of test case for issue related of ↵Mathieu Féry2023-08-0422-313/+902
| | | | | | | | | | | | 927bbc7160a812bb29c0e7120d4a3009bfb13bbf Almost done
* | Merge remote-tracking branch ↵Sven Gothel2023-08-045-7/+19
|\ \ | | | | | | | | | 'Mathieu_Fery/feature/prevent_callback_generation_if_setter_is_absent'
| * | feat(callbackGenerator): Prevent generation of CallBack interface if setter ↵Mathieu Féry2023-08-045-7/+19
| | | | | | | | | | | | related isn't present
* | | Merge remote-tracking branch ↵Sven Gothel2023-08-041-4/+15
|\ \ \ | | | | | | | | | | | | 'Mathieu_Fery/feat/array_accessor_with_getter_of_field_in_pascal_case'
| * | | feat(arrayAccessor): Allow to use ReturnedArrayLength with getter associated ↵Mathieu Féry2023-08-031-4/+15
| |/ / | | | | | | | | | with field with name in PascalCase or camelCase
* | / Revert "JavaCallback: Remove non-UserParam ↵Sven Gothel2023-08-042-2/+12
| |/ |/| | | | | | | | | JavaConfiguration.requiresJavaCallbackCode()" This reverts commit 927bbc7160a812bb29c0e7120d4a3009bfb13bbf.
* | doc/GlueGen_Mapping.md: Shorten UserParamIndex '<0' to disable 'UserParam' ↵Sven Gothel2023-08-042-4/+65
| | | | | | | | and produce html page
* | JavaCallback: Remove non-UserParam JavaConfiguration.requiresJavaCallbackCode()Sven Gothel2023-08-042-12/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | JavaCallbackEmitter.emitJavaKeyClass(): Use directBufferAddress for compound ↵pulledSven Gothel2023-08-045-16/+259
| | | | | | | | | | | | | | | | | | 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.
* | JavaEmitter.bindFunction(): Add JavaCallback userParam non-void case (i.e. ↵Sven Gothel2023-08-041-18/+28
| | | | | | | | | | | | | | | | | | '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.
* | CMethodBindingEmitter.emitBodyPassCArguments(): Either pass ↵Sven Gothel2023-08-041-2/+4
| | | | | | | | | | | | | | | | STRING_CHARS_PREFIX or javaCallbackEmitter.emitCOptArgumentSuffix(..) We only produce one variant in code. Use case: String type as userParam (barely tested and not useful)
* | Fix & Enhance Test4JavaCallback for non-userParam chapter12*: Fix ad-hoc ↵Sven Gothel2023-08-044-38/+142
| | | | | | | | | | | | | | | | 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
* | JavaEmitter: Encapsulate 'needsJavaCallbackCode' query in JavaConfiguration. ↵Sven Gothel2023-08-042-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | JavaCallbackEmitter.emitCAdditionalCode(): Use `info.cbFuncBinding` locally ↵Sven Gothel2023-08-041-6/+11
| | | | | | | | | | | | | | | | 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`.
* | JavaCallbackEmitter.emitJavaCallbackBodyPassJavaArguments(): Drop redundant ↵Sven Gothel2023-08-041-5/+5
| | | | | | | | | | | | | | | | | | 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
* | JavaCallbackEmitter.emitCSetFuncPreCall(): Drop redundant arg ↵Sven Gothel2023-08-032-5/+5
| | | | | | | | | | | | | | 'CMethodBindingEmitter jcbFuncCMethodEmitter', use local 'info.cbFuncBinding' Was added in commit ad69716fda64b517c33ed847c4b215ea398aac99 'callback without userData', while adding ad-hoc compound conversion.
* | JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode, ↵Sven Gothel2023-08-032-37/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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'.
* | JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode, ↵Sven Gothel2023-08-031-4/+5
| | | | | | | | emitJavaCallbackBodyPassJavaArguments}(): Use capitalized sub-string 'baseArgName' for (static) callback related entities
* | JavaCallbackEmitter.{emitCSetFuncPreCall, emitCAdditionalCode}(): Group ↵Sven Gothel2023-08-031-6/+17
| | | | | | | | 'userParamDefined' case (cleanup)
* | CMethodBindingEmitter.emitBodyMapCToJNIType(..): Add proper intendation to ↵Sven Gothel2023-08-031-9/+13
| | | | | | | | NIO ByteBuffer generation (isNIOBuffer || isCompoundTypeWrapper)
* | Merge remote-tracking branch ↵Sven Gothel2023-08-0210-110/+418
|\ \ | | | | | | | | | 'Mathieu_Fery/feature/java_callback_without_user_data' into pulled
| * | doc/GlueGen_Mapping.md: Add some documentation with JavaCallback without ↵Mathieu Féry2023-08-011-2/+68
| | | | | | | | | | | | userData
| * | feat(callbackGenerator): Add basic management of callback without userDataMathieu Féry2023-07-319-108/+350
| |/
* / feat(generation): Add setter generation for not constant and not opaque ↵Mathieu Féry2023-07-314-5/+33
|/ | | | compound attribute
* doc/GlueGen_Mapping.md: Using 'UserParamClass' .. grammar (3 commits for 1 ↵rcSven Gothel2023-07-102-3/+3
| | | | | | discount today) Cough cough .. should have reviewed the whole thing once. Must be the summer distraction causing premature commits. Sorry about that :)
* doc/GlueGen_Mapping.md: Typos 'UserParam' -> 'UserParamClass' (2 more ↵Sven Gothel2023-07-102-8/+8
| | | | occassions)
* doc/GlueGen_Mapping.md: Typos 'UserParam' -> 'UserParamClass'Sven Gothel2023-07-102-4/+4
|
* GlueGen JavaCallback: Add optional custom 'Callback-UserParamClass` for ↵Sven Gothel2023-07-109-443/+513
| | | | non-compound `UserParam` types to have more clarity in resulting API
* Manual: Fix ArgumentIsPascalStringSven Gothel2023-07-081-2/+2
|
* GlueGen JavaCallback: Add capability to have UserParam as (part of) keySven Gothel2023-07-0811-106/+709
| | | | | | | | | 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.
* GlueGen JavaCallback Doc: Remove reasoning (avoiding ambiguity) to ↵Sven Gothel2023-07-062-10/+4
| | | | CallbackFunction parameter index
* GlueGen JavaCallback: Remove ambiguity: Config ↵Sven Gothel2023-07-069-157/+200
| | | | JavaCallbackDef/JavaCallbackKey: Always define both parameter indices; emitJavaStaticCallback(): Use cbFuncBinding and cbFuncKeyIndices from callback parameter to build key
* GlueGen JavaCallback: Fix `staticCBClazz*` initial setup (only), using a ↵Sven Gothel2023-07-051-18/+22
| | | | | | NewGlobalRef() for jclass (not required for static jmethodID) Also use a longer jclass argument name 'clazz' -> 'staticCBClazz' to avoid potential collisions
* Manual: Refine `ArgumentIsPascalString`Sven Gothel2023-07-051-3/+3
|
* GlueGen: Add 'PascalString' string semantics (length + value-ptr), added ↵Sven Gothel2023-07-056-25/+177
| | | | | | | | | | | | | | | | | | | | | | | | | 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