CHANGELOG.md

March 19, 2015 ยท View on GitHub

Current development version (0.13-SNAPSHOT)

...

Version 0.12 (20150308)

Version 0.11 (20130107)

  • Fixed infinite loops in simple typedefs ([issue nativelibs4java#288] (https://github.com/nativelibs4java/nativelibs4java/issues/288))
  • Fixed some -beautifyNames cases ([issue nativelibs4java#315] (https://github.com/nativelibs4java/nativelibs4java/issues/315))
  • Fixed parsing of some C++ templates (including template constructors)
  • Fixed "long long" regression
  • Fixed JNAeratorMojo.config documentation ([issue nativelibs4java#330] (https://github.com/nativelibs4java/nativelibs4java/issues/330))
  • Fixed long / long long / short pointer function return types
  • Fixed generation of BridJ C++ constructors
  • Fixed enum names that collide with Java identifiers ([issue nativelibs4java#334] (https://github.com/nativelibs4java/nativelibs4java/issues/334))
  • Added a type definition override switch, useful force mismatching 32/64bits types to some predefined types (for instance, -TmyVal=intptr_t)
  • Added raw bindings generation for BridJ
  • Added parsing of 'using' C++ statements
  • Added TypeRef.resolvedJavaIdentifier
  • Added parser support for complex double (cf. complex.h)
  • Added test for BridJ raw signatures
  • Moved to ECJ 3.7.2
  • Moved to JNA 3.4.0
  • Refactored type resolution and conversion
  • Rationalized CompilerUtils classpath + bootclasspath

Version 0.10 (20120415, commit 6bc061dfce06b941086a29f696195e82fbaffbdc)

Version 0.9.9 (20111107, 1cad7b05da2e89ce53246f30b181159ef8fce0c3)

Version 0.9.8 (r2128, 20110621)

  • Better COM JNAeration for BridJ (now supports and converts __declspec(uuid("xxx")) attributes !)
  • Accept some ill-formed constructs (mismatched extern "C" { ... }) for better cross-files parsing
  • Fixed JNAeration of nested dependent constants defines
  • Fixed automatic macro definitions : don't override already defined macros
  • Fixed parsing of singleton extern "C" definitions (without curly braces)
  • Fixed issue 86 (http://code.google.com/p/jnaerator/issues/detail?id=86)) : generate proper array creation code for empty structs with the JNA runtime.
  • Fixed issue 85 (http://code.google.com/p/jnaerator/issues/detail?id=85)) : generate proper constant pointer casting code for BridJ : #define PTR ((void*)-1) generates Pointer<?> PTR = Pointer.pointerToAddress(-1);
  • Fixed generation of enums
  • Fixed typing of (constant) boolean expressions

Version 0.9.7 (r1817, 20110329)

Version 0.9.6 (r1638, 20110204)

  • Added explicit call to setFieldOrder in JNAerated JNA structures (no need for BridJ, which has its @Field annotations to guarantee proper order)
  • Enhanced parsing and AST generation of C/C++ expressions
  • Fixed BridJ inherited struct fields indexes computation

Version 0.9.5 (r1330, 20101011):

  • Moved to JNA 3.2.7
  • Support anonymous bit fields : struct S { int :7; int b; }
  • Better beautification of underscored typedefs : typedef struct Toto__ { ... } Toto; now handled properly
  • Extended -I command line syntax to include files directly (which does the same as an #include statement) : files are parsed but their content is not targetted for code generation
  • Added -beautifyNames switch to transform some_func() into someFunc() (http://code.google.com/p/jnaerator/issues/detail?id=59) )- Fixed names with dollars (and Scala struct field setters in particular !)
  • Added -scalaStructSetters option
  • Fixed callbacks fields
  • Fixed studio JVM hanging issue (http://code.google.com/p/jnaerator/issues/detail?id=66) )- JNAerator Studio now launched when there's no command line args (JAR is double-clickable, at last !)
  • Fixed struct** fields (PointerByReference instead of faulty Struct.ByReference[] !)
  • Changed name of callbacks's single method from "invoke" to "apply" (to make them Scala-friendly)
  • Fixed parsing of large files (reverted EASILY_DEBUGGABLE_BUT_FRAGILE_PARSING_MODE to false)
  • Added __restrict keyword
  • Added -synchronized switch to mark generated methods as synchronized (only in direct-mode JNA and BridJ outputs)
  • Fixed generation of BridJ enums, constants and arrays
  • Parse(skip) GCC inline assembler (asm)
  • Parse some ObjectiveC 2 constructs : @package, @required and @optional member modifiers + new @property syntax
  • Fixed parser regressions (0x7f, +10)
  • Added experimental reification feature for BridJ output (-reification switch) : transforms functions that have a first "this-like" pointer argument into methods of the corresponding pointer type. Instead of getting : {{{ public native static TestLibrary.GXEntity gxCreateEntity(int someParam); public native static void gxEntitySetValue(TestLibrary.GXEntity entity, int key, int value); public native static int gxEntityGetValue(TestLibrary.GXEntity entity, int key); /// Pointer to unknown (opaque) type public static class GXEntity extends TypedPointer { public GXEntity(long address) { super(address); } public GXEntity(Pointer address) { super(address); } }; }}} You'd get the assembly-optimizable BridJ binding : {{{ native static @Ptr long gxCreateEntity(int someParam); native static void gxEntitySetValue(@Ptr long entity, int key, int value); native static int gxEntityGetValue(@Ptr long entity, int key); public static class GXEntity extends TypedPointer { public GXEntity(long address) { super(address); } public GXEntity(Pointer address) { super(address); } public static GXEntity create(int someParam) { long ret = gxCreateEntity(someParam); return ret == null ? null : new GXEntity(ret); } public void setValue(int key, int value) { gxEntitySetValue(this.peer, key, value); } public int getValue(int key) { return gxEntityGetValue(this.peer, key); } } }}}

Version 0.9.4 (r1067@nl4j, 20100717)

  • better C/C++ parsing (cast operators, templates, anonymous structs...)
  • fixed JNAerator issues #63 ("JNA runtime does not support bit fields"), #64 ("on Windows, use %ProgramFiles%" to infer Visual Studio install directory.")
  • enhanced BridJ runtime generation support
  • enhanced debug output in verbose mode
  • Added -beanStructs command line option to generate getters and setters for JNA (issue 62 @ jnaerator)

Version 0.9.3 (r760@nl4j, 20100121)

  • Fixed parsing of some common C expressions (better tolerates inline functions)
  • Fixed parsing of OpenCL source codes (used by JavaCL Generator project on NativeLibs4Java/JavaCL project)
  • Introduced experimental lightweight structures support (use new "-runtime JNAeratorNL4JStructs" switch)
  • Added automatic import statements generation to make source code smaller and easier to read (use new -noAutoImports switch to disable).

Version 0.9.2 (r886, 20081030):

  • Fixed [issue nativelibs4java#31] (https://github.com/nativelibs4java/nativelibs4java/issues/31) : parse unnamed "char *const *" function arguments
  • Fixed [issue nativelibs4java#35] (https://github.com/nativelibs4java/nativelibs4java/issues/35) : byref, byval, in, out and bycopy can now be used in most contexts (general case of issue #22 is still not fixed, though)
  • Fixed regression on structs with callbacks
  • Added "oneway" Objective C modifier
  • Allow java-only modifiers, declspec and gcc attributes as identifiers (native, transient, dllimport...)
  • Fixed [issue nativelibs4java#38] (https://github.com/nativelibs4java/nativelibs4java/issues/38) : Function pointer pointers were completely broken
  • Fixed regression since maven move : missed objectivec static forwards exclusion list
  • Deprecated Structure.toArray(), renamed to Structure.castToArray().
  • Added static Structure.newArray(Class<? extends Structure>, int length)
  • JNAerating a typed static newArray(int length) for each structure
  • Added "C type" comment to struct fields with non-primitive types
  • Deprecated StringPointer
  • Added basic output customization capabilities with -choicesOut & -choice switches : syntax is one line of the C function declaration, then n lines of corresponding Java declarations, each function block being separated by an empty line.
  • Fixed [issue nativelibs4java#39] (https://github.com/nativelibs4java/nativelibs4java/issues/39) : Failure to parse define with expression containing a cast
  • Fixed long constants being generated as NativeLong (now long)
  • Fixed regression with function pre-comments
  • Fixed generation of references to constants defined in other libraries
  • size_t is now mapped to NativeSize. Classes NativeSizeByReference & GlobalNativeSize have also been added, along with a backwards compatibility switch -sizeAsLong (and a switch -gccLong to treat 'long' as 'size_t')
  • Fixed primitive type promotion of constants (NativeLong -> long)
  • Added -ifRegexMatch switch
  • Define STDC in auto configuration
  • Fixed [issue nativelibs4java#44] (https://github.com/nativelibs4java/nativelibs4java/issues/44): Hypens in header names translate to hyphens in class names
  • Byref & globals mapping of NSInteger now uses NativeSizeByReference and GlobalNativeSize, instead of NativeLong derivates