Sometimes I write things, sometimes I don't.

To content | To menu | To search

GIR for java-gnome: update week 30

Not a lot of commits for this week but there was work. The only commit I have made was to detect dynamically the location of Introspection XML files for each distribution (for now only Debian based distros are handled).

Most of the work that I have made is not commited yet. I worked on the XML parser to:

  • handle both virtual methods and GLib signals,
  • handle functions,
  • handle fields for boxeds.

There are still work to do to have a proper parser that can handle without any problems all the .gir files. Each time I fix something two new problems appear but heh this is how computing stuff works. The XML parser is getting larger every day and I will have to refactor it once more to reduce the amount of code due to some copies and pastes. The Introspection files are now detected based on the path where they are put by the distributions packages. This is done at the ./configure step. The script tries to find the files and asks the user to install the required package if it fails.

I have also planned to provide a way to override Introspection data to make the code generator behaves like we want to. This is a little bit the case right now with the possibility to override the names of objects but I would like to extend this feature to the whole range of things that we can handle (methods, functions, etc).

In my proposal I have written that I would like to have a code generator using Introspection data that would work with a minimal sets of types. It is the case right now. The code generator works, it generates JNI and translation layers, but there are still errors on some parts. For a basic class the code generator is working really well but when the complexity (in the Introspection side or even in the java-gnome side) is increasing problems appear. One of the problems right now is the handling of parameters and return values based on GList and GSList for example. I hope to fix all of this soon to continue with more interesting stuff.