Current development version (0.9.9-SNAPSHOT)

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)

- Fixed generation of typed pointers (+ introduced undefined types for BridJ runtime)
- Added generation of globals for BridJ
- Added -parseInOneChunk option to control parsing more finely (forces regular, non isolated-mode parsing, which is more correct but also more fragile)
- Fixed enum renaming (issue 82: http://code.google.com/p/jnaerator/issues/detail?id=82)
- Fixed unescaped quotes in string defines (issue 79: http://code.google.com/p/jnaerator/issues/detail?id=79)
- Fixed some exotic function pointer syntax (issue 84: http://code.google.com/p/jnaerator/issues/detail?id=84)
- Fixed binding of Windows' BOOL type for BridJ: it's int, not boolean !!!

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 #31 : parse unnamed "char *const *" function arguments
- Fixed issue #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 #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 #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 #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


