summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Fix 'typo' in messages: 'Catched' -> 'Caught'Sven Gothel2014-06-289-19/+19
|
* Buffers: Split slice2Float(..) into dedicated methods for FloatBuffer and ↵Sven Gothel2014-06-271-32/+53
| | | | float[] backing-array - refine API doc w/ backing-array semantics
* CMethodBindingEmitter: Suppress compiler warning in NewDirectByteBuffer ↵Sven Gothel2014-06-251-2/+2
| | | | usage (cast to void*)
* Bug 1025 - GlueGen: Fix regression of single non-native sized compound fieldsSven Gothel2014-06-251-5/+21
| | | | | Single non-native sized compound fields, if an opaque array/pointer, must utilized the native size StructAccessor get/set method.
* Bug 1025 - GlueGen: Fix test case (gcc compiler regression due to redefined ↵Sven Gothel2014-06-252-10/+0
| | | | types / removed them)
* Bug 1025 - GlueGen: Add accessor for compound fields of type array, pointer ↵Sven Gothel2014-06-2518-427/+1872
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and string (code generation) Enhance compound access as delivered by Bug 1022, to also generate accessors (getter and setter) for array, pointer and string types. Allow configuration of array length either via their internal size (c-header) or config 'ReturnedArrayLength'. 'ReturnedArrayLength' allows specifying a java expression. Canonical field names of compounds are _now_ specified as follows for configuration entries: COMPOUND.FIELD e.g. StructA.fieldB Also allow configuration of pointer fields to be treated as referenced arrays via 'ReturnedArrayLength'. Further, allow specifying 'pointer fields' as String values via 'ReturnsString' configuration. ++++ Implementation details: - handle above described accessor features - enhance JavaDoc for generated accessors - generate native JNI compound and string accessor on demand - encapsule accessor code generation in their own methods - enhance exception messages - enhance type verbosity in debug mode - verbose debug output via GlueGen.debug() Tests: - Features covered by test1.[ch] and Test1p1JavaEmitter and Test1p2ProcAddressEmitter - Validated compilation and unit tests for modules: - joal - jogl (minor config changes req.) - jocl (minor config changes req.)
* GlueGen: Add support for compound-array in structs (accessors) ; Allow using ↵Sven Gothel2014-06-197-61/+212
| | | | | | | | | | | | | | | C-Enum values for array length - Parser (HeaderParser.g): Support using C-Enum values for array length specification - Will throw an exception if enum identifier is unknown or exceeds int-size - Add StructEmitter supports for compound-arrays - Add Debug stderr verbose info: - Struct Emitter prefix 'SE.' - to analyze emitting struct fields (offset+size and accessors) - Struct Layout prefix 'SL.' - to analyze memory layout (based on MachineDescription.StaticConfig.X86_64_UNIX) Tested via test1.[ch] BaseClass ..
* GlueGen: Refine compound [array] call-by-value native code injection and ↵Sven Gothel2014-06-182-7/+46
| | | | | | | | | | | initialization Follow-up of commit 1eadaf928f4f61aae4de1c8bf33c5b77bdfa882f - Refine MethodBinding detection for 'requiresStaticInitialization', i.e. return type is a "compound type" and not a pointer - JVMUtil_NewDirectByteBufferCopy: Throw FatalError if initializeImpl() has not been called
* GlueGen: Refine compound [array] call-by-value native code injection and ↵Sven Gothel2014-06-182-175/+237
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | initialization Follow-up of commit 9843e983a4fc71a64eb3de9cb364a1f4ffa56b3a Only add static initialization code (java, native) and hence native code 'JVMUtil_NewDirectByteBufferCopy(..)' if either required _or_ forced via configuration. This shall reduce possible sideffects and dead code. Add JavaConfiguration: /** * Returns true if the static initialization java code calling <code>initializeImpl()</code> * for the given class will be manually implemented by the end user * as requested via configuration directive <code>ManualStaticInitCall 'class-name'</code>. */ public boolean manualStaticInitCall(String clazzName); /** * Returns true if the static initialization java code implementing <code>initializeImpl()</code> * and the native code implementing: * <pre> * static jobject JVMUtil_NewDirectByteBufferCopy(JNIEnv *env, void * source_address, jlong capacity); * </pre> * for the given class will be included in the generated code, always, * as requested via configuration directive <code>ForceStaticInitCode 'class-name'</code>. * <p> * If case above code has been generated, static class initialization is generated * to call <code>initializeImpl()</code>, see {@link #manualStaticInitCall(String)}. * </p> */ public boolean forceStaticInitCode(String clazzName);
* Fix commit f4e753ff1f39be381307ffdb0fb6bb7a2d323eff: 'compound array ↵Sven Gothel2014-06-174-97/+176
| | | | call-by-value' JavaMethodBindingEmitter, array may still require NIO handling, also consider NIO array length.
* GlueGen: Add support for 'compound array call-by-value'Sven Gothel2014-06-1712-110/+201
| | | | | | | | | | | | | | | | | | | | | | | | | Completing commit c3054a01990e55ab35756ea23ab7d7c05f24dd37 by allowing passing compound arrays via 'call-by-value. - Creating linear temp heap, copying NIO values into it and passing to C function. Copy-back if not 'const', see below. - Respect 'const' qualifier to skip write-back of temp heap passed to C function - See tag: // FIXME: Compound and Compound-Arrays for code changes and validation of completeness - triggers for compound arrays are: - javaType.isArrayOfCompoundTypeWrappers() - type.isArray() - simplified const query by c-type: FunctionEmitter.isBaseTypeConst(ctype) +++ Tests: Added call-by-value to test1.[ch] binding test!
* TestVersionSemantics: No more expecting BACKWARD_COMPATIBLE* (Due to bumping ↵Sven Gothel2014-06-171-1/+1
| | | | to 2.2.0)
* gluegen: move all antlr grammars to a top-level directory (refine commit ↵Sven Gothel2014-06-176-0/+0
| | | | | | e8bc9edd3c39170af038ab23b8cdca9ffd6f2d56): src/antlr (IMHO no need for 'main') /src/main/antlr/ -> /src/antlr/
* Merge remote-tracking branch 'hharrison/antlr-move'Sven Gothel2014-06-1714-39/+29
|\
| * gluegen: update HeaderParser grammar to annotation EnumType map and ↵Harvey Harrison2014-05-312-12/+11
| | | | | | | | | | | | functions list Signed-off-by: Harvey Harrison <[email protected]>
| * gluegen: remove some unused importsHarvey Harrison2014-05-315-6/+0
| | | | | | | | Signed-off-by: Harvey Harrison <[email protected]>
| * gluegen: move all antlr grammars to a top-level directoryHarvey Harrison2014-05-316-0/+0
| | | | | | | | | | | | | | | | /src/main/antlr/.. This gets the .g files unmixed from the non-generated java files for the cgram/jgram packages. Signed-off-by: Harvey Harrison <[email protected]>
| * gluegen: update antlr grammer to produce annotated enum and functionName setsHarvey Harrison2014-05-182-17/+15
| | | | | | | | | | | | | | The annotations are all commented out, uncomment them and reduce the type warnings during the build. Signed-off-by: Harvey Harrison <[email protected]>
| * gluegen: remove an unreferenced writer variableHarvey Harrison2014-05-181-1/+0
| | | | | | | | Signed-off-by: Harvey Harrison <[email protected]>
| * gluegen: avoid a suppressed warning annotation by using the ArrayList copy ↵Harvey Harrison2014-05-181-3/+3
| | | | | | | | | | | | | | | | | | | | constructor clone() can't be used without warnigns and is no more efficient that the copy constructor, replace the call and kill the suppressed warning annotation. While here, mark the modifier list as private final. Signed-off-by: Harvey Harrison <[email protected]>
* | GlueGen: Add support for 'compound call-by-value', i.e. passing and ↵Sven Gothel2014-06-1710-174/+455
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | returning struct instance 'compound call-by-value' is not efficient. However, to allow mapping APIs utilizing passing small structs as arguments and return values - this feature has been added. +++ To return the struct value, native code needs to allocate a NIO ByteBuffer and copy the data. The stack return value can be dismissed afterwards and the NIO buffer is returned. We include this functionality for all generated [impl] classes, native method: 'static jobject JVMUtil_NewDirectByteBufferCopy(JNIEnv *env, void * source_address, jlong capacity)' (See: 'JavaEmitter.initClassAccessCode') Since this code requires knowledge of java classes and methods, for which a reference needs to be acquired, a static initialization method has been introduced for all generated [impl] classes: 'private static native boolean initializeImpl();' Per default the this method will be called in the new static initializer block of the class, which can be supressed via the configuration element: 'ManualStaticInit <class-name>' 'ManualStaticInit' can be used to issue the 'initializeImpl()' call in a custom static initializer written by the user. However, at the time 'initializeImpl()' gets called the JNI native library must have been loaded, of course! +++ - See tag: // FIXME: Compound call-by-value for code changes and validation of completeness Trigger for compond call-by-value in CMethodBindingEmitter is: !cArgType.isPointer() && javaArgType.isCompoundTypeWrapper() Trigger for compond call-by-value in JavaEmitter is: t.isCompound() +++ Further more we do tolerate 'javaType.isCPrimitivePointerType()', i.e. adding comments for offset/size and field entries, which are all NOP. This allows to utilize the remaining fields of the native structure. +++ Tests: Added call-by-value to test1.[ch] binding test!
* | ReflectionUtil.getConstructor: Add 'initializeClazz' argument, allowing to ↵Sven Gothel2014-06-172-10/+11
| | | | | | | | defer static class initialization
* | Minor edits: space, final qualifier; setenv-build-*: Add generic JDK locationSven Gothel2014-06-172-2/+3
| |
* | JavaEmitter.typeToJavaType: Simplify if-else block ; ↵Sven Gothel2014-06-162-5/+5
|/ | | | JavaType.getDumpString(): Add more info ..
* gluegen: avoid appending Strings in a loop, pull out a Stringbuilder we can ↵Harvey Harrison2014-05-171-11/+17
| | | | | | | | reuse Reuse a single stringbuilder to build all the comment strings and emit them if required. Signed-off-by: Harvey Harrison <[email protected]>
* gluegen: use parseInt, parseLong to avoid boxing unboxing an Integer/LongHarvey Harrison2014-05-171-2/+2
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* Bump semver to 9ec2e5329780214d317b026f7c0b086972a94a5c - Using ↵Sven Gothel2014-05-141-94/+5
| | | | Dumper.dumpFullStats(..)
* VersionSemanticsUtil: Produce diff stat per-class w/ diff-type-count and ↵Sven Gothel2014-05-141-5/+90
| | | | dump diffs per diff-type
* Bump semver.jar to 731db3566b4096ecf6a08a9d33991400e66c5021 (sgothel/jogamp ↵Sven Gothel2014-05-132-9/+8
| | | | branch): Using direct regexp for excludes
* Unit Test: Modularize Semantic Version Test / Fix 'excludes'Sven Gothel2014-05-132-73/+152
| | | | | | | Refactor base semjar unit test class into com.jogamp.junit.util.VersionSemanticsUtil, part of new gluegen-test-util.jar. The new gluegen-test-util.jar shall be used by all other modules to test versioning.
* Unit Test: Added Semantic Version Test (Current version agains v2.1.5)Sven Gothel2014-05-131-0/+149
| | | | | | | | | | | | | TestVersionSemantics adds testing of semantic versioning of 2.1.5 gluegen-rt.jar against the current version within a unit test. Currently we expect BACKWARD_COMPATIBLE_USER and need to toggle this to NON_BACKWARD_COMPATIBLE, if actually perfoming non compatible major or minor version changes. The latter is allowed right now, since we increment from 2.1 -> 2.2! - Added https://github.com/jeluard/semantic-versioning semver.jar (Apache License Version 2.0)
* RunnableTask: Add static method 'invokeOnNewThread(..)' for convenience ↵Sven Gothel2014-05-111-1/+39
| | | | (Used in JOGL to mitigate Bug 1004)
* Bug 923: Remove dependency of CStruct annotation processor _generation_ and ↵Sven Gothel2014-05-119-190/+405
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | generated_class_user due to Java8 issues. Java8's annotation processor as embedded within javac does not allow referencing not-yet existing generated classes in a class source code which will produce these generated classes via the annotation process. Example: +++ import com.jogamp.gluegen.structgen.CStruct; public class Lala { @CStruct(name="RenderingConfig", header="TestStruct01.h") public RenderingConfig config; } +++ Above example illustrates that the type 'RenderingConfig' does not exist at time of processing the annotation. The type will be created via the annotation process itself. Even though we pass '-proc:only', i.e. skip java compilation, Java8's annotation processing via javac fails in such case. We see this as a bug within javac's annotation processing itself! +++ This workaround splits the annotation process and using the class as generated by the former. To allow this to work, CStruct receives a new field 'jname' allowing to enforce the java-name of the structure using a dummy field type like boolean. @CStruct(name="RenderingConfig", jname="RenderingConfig", header="TestStruct01.h") public boolean dummy; Further more CStruct can be annotated on the package, i.e. 'package-info.java', avoiding the dependency problem altogether. To support multiple header files and types, 'CStructs' has been introduced using an array of 'CStruct'. @CStructs({@CStruct(name="RenderingConfig", header="TestStruct01.h"), @CStruct(name="Pixel", header="TestStruct02.h")}) package com.jogamp.gluegen.test.junit.structgen; Tests: - Build w/ Java7 and Java8 - Validated 'major version 50' (Java 6) class files (OK)
* UnixDynamicLinkerImpl_JNI.c: Add (inactive) dlopen debug code (helper to ↵Sven Gothel2014-05-091-0/+24
| | | | analyze llvm-vmkit libGL loading issue)
* PosixDynamicLinkerImpl: cleanup uncommented enums's intendationSven Gothel2014-05-091-2/+2
|
* build/test: Add ant-junit4.jar to classpath; Add experimental gluegen-rt-alt ↵Sven Gothel2014-05-091-0/+77
| | | | recipe (inactive); Misc ..
* gluegen: avoid bugs with sign-extension in readUInt16Harvey Harrison2014-04-111-2/+3
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* Revert "Fix CStruct annotation processor warning."v2.1.5Sven Gothel2014-03-101-1/+1
| | | | This reverts commit fccb2460832aedd1b51372aa1e7881770cb638c9.
* Minor Cleanup after merging fixes for bugs 987, 990, 992 and 994Sven Gothel2014-03-104-11/+14
|
* Merge remote-tracking branch ↵Sven Gothel2014-03-101-1/+1
|\ | | | | | | 'remotes/wwalker/bug_994_fix_cstruct_annotation_warning'
| * Fix CStruct annotation processor warning.Wade Walker2014-03-061-1/+1
| | | | | | | | | | Updated the Java source version the annotation processor supports to stop it from throwing a warning during the build process.
* | Merge remote-tracking branch ↵Sven Gothel2014-03-101-0/+3
|\ \ | | | | | | | | | 'remotes/wwalker/bug_992_allow_ignore_of_unnamed_structs'
| * | Allow Ignore in config to ignore unnamed structs.Wade Walker2014-03-051-0/+3
| |/ | | | | | | | | | | | | | | | | | | Augments the behavior of the Ignore keyword to ignore when gluegen skips the emission of unnamed structs. These structs are usually unnamed because we've created opaque types for them, so we know they're not going to be emitted and want to be able to suppress the warning on a case-by-case basis.
* | Fix accidental tabs.Wade Walker2014-03-044-25/+25
| |
* | Remove warnings in emitted C code.Wade Walker2014-03-046-1/+64
|/ | | | | | | | Fix 1: Only emit "int * _offsetHandle = NULL" if it will be used, to avoid unused variable warning. Fix 2: Add "unsigned" to typecasts in C function calls when needed to avoid implicit typecast warning. This commit also adds a unit test for a method that uses an "unsigned char **" parameter, to mimic the JOCL clCreateProgramWithBinary() function that caused the typecast warnings.
* Bitstream: Add 'throwIOExceptionOnEOF' mode; fix certain EOS situations ↵Sven Gothel2014-02-211-9/+85
| | | | (flush, skip)
* Bug 980: Refine Bitstream API 'signed' and 'unsigned' semantics - ↵Sven Gothel2014-02-217-88/+105
| | | | readUInt32(..) must return long due to EOF
* Bitstream: Another CamelCase fix: uint32LongtoInt -> uint32LongToIntSven Gothel2014-02-211-2/+2
|
* Bitstream: Refine c70c730b22c847668cf475dc6f841b85297ac3ab: 'toUint32Long' ↵Sven Gothel2014-02-213-14/+22
| | | | -> 'toUInt32Long', add 'uint32LongtoInt'
* Bitstream: Add static 'long toUint32Long(int)' and 'int toUint32Int(int)' ↵Sven Gothel2014-02-213-13/+60
| | | | conversion functions