GUI wrapper for jextract

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Tue Oct 4 09:18:34 UTC 2022


Hi Nir,

On 02/10/2022 22:31, Nir Lisker wrote:
> 5. When analyzing the symbols of a header using the dump option, I 
> need to read the file that jextract creates from disk and then delete 
> it. Is there a way to read the jextract output directly? Either 
> through the output stream, or writing to a file in memory? Dealing 
> with disk I/O is cumbersome, comes with permission restrictions, and 
> might be slow if done for many files in a batch.

I think ultimately, working with files might be not ideal for your use case.

There is a pseudo-stable API to parse jextract files, in the 
JextractTool class (in the org.openjdk.jextract package, which should be 
exported by the jextract module):

`public static Declaration.Scoped parse(List<Path> headers, String... 
parserOptions) {`

We do not make any promise (at this stage at least) on the stability of 
the API. That said, it has not changed much (at all?) in the last couple 
of years.

What you get back is a "Declaration", which is used to model vars, 
structs, unions, typedefs, functions

Then, attached to declarations, there are "Type"s, which are used... 
well, to model types. Since some type can be structured (e.g. a struct 
type), they can point back to their declaration (e.g. Type.Declared).

Jextract does all it does by defining visitors on this basic declaration 
tree, which is obtained by wrapping the results of parsing a C header 
using the clang API (e.g. clang Cursors).

We did this to "sanitize" the output of clang, as well as to make our 
implementation more robust and less dependent from clang internals.

One option for you would be to invoke the parsing process this way, then 
get the tree and look at the results (e.g. with a visitor), which sounds 
better than parsing an option file.


Cheers
Maurizio


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jextract-dev/attachments/20221004/a8f0cf3f/attachment.htm>


More information about the jextract-dev mailing list