[foreign] RFR: jextract should emit toplevel annotations

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon May 28 18:07:58 UTC 2018


Hi,
this patch fixes jextract so that it generates the toplevel annotations 
described in [1] - which are also the one understood by the binder in 
the foreign branch.

I've garbage collected the unused annotations (NativeType, Array and 
Offset).

The general tactic to generate the new layout strings is to parse a 
clang type into a Layout API object. Then use the toString method of the 
layout to generate the string description.

There are few subtleties in the code that does the parsing:

* there are two paths that generate record layouts: one is from 
Utils.getLayout, which generates a symbolic reference to the layout 
(e.g. $(Foo)). Another from Utils.getRecordLayout, which generates the 
full record layout description.

* getRecordLayout must recursively call getRecordLayout in case of 
nested anonymous struct, whose layout is inlined with the enclosing struct

* inside getRecordLayout padding is added to the layout, as needed, so 
as to respect the offset returned by clang

Webrev:

http://cr.openjdk.java.net/~mcimadamore/panama/jextract_toplevel/

Cheers
Maurizio

[1] - http://cr.openjdk.java.net/~mcimadamore/panama/panama-binder-v3.html




More information about the panama-dev mailing list