Have you seen glibmm's gmmproc-refactor branch in the git repository (https://git.gnome.org/browse/glibmm/?h=gmmproc-refactor)? Krzesimir Nowak has started a complete rewrite of gmmproc, using gobject-introspection, I think. Nothing has been added to that branch since July 2012. Still, it might be worth looking at. Sorry, I don't know anything about it, except that it exists.
Kjell
Den 2014-10-01 08:22, Juan Rafael García Blanco skrev:
Hi,
I did try to generate C++ bindings for gobject-introspected libraries. However, all I achieved before losing interest was a gir parser written in python (you can see advertisement of this in the list's archives).
I don't understand what you mean by 'why don't we use it in mm projects instead of writing perl scripts'. gobject-introspection provides two products for each library: a XML file (gir) containing the definition of the API, and a typelib where that definition is compiled (platform dependent). For mm projects the gir files could be really useful, and we could replace the current set of perl scripts with a set of programs/scripts that parse the gir files and generate the .defs files from them. But you cannot avoid writing something to parse the XML gir files; note that typelibs are platform dependent and therefore are not suitable for our needs.
In my opinion, and I think in the opinion also of more people, a first step would be to generate the .defs files from gir files, writing a parser in perl, python, ... whatever.
A second step could be to, in addition to .defs files, generate also the .hg and .ccg files from gir files. I think this needs to add some flexibility for inserting hand-written code, since APIs are not always that good and we may want to make modifications, event to make them more C++-ish.
So, conclusion: mm projects could take advantage of gobject-introspection for generating .defs files and even .hg and .ccg files. We shouldn't, however, replace all that has been done and come up with new API conventions; i.e. we shouldn't get rid of RefPtr, GLib::Object, ... However, gobject-introspection is not a panacea: in contrast with what happens with interpreted languages, we still need to provide separate packages for every wrapped library, i.e. we obviously cannot provide dynamic bindings using typelibs.
As far as I know, someone wrote a Go bindings generator from gobject-introspection; and also for Java.
I recently created a project on github (it is empty nowadays) to write a gir parser that can output .hg and .ccg files. This could be useful for wrapping, for example, new classes. Instead of writing a bunch of WRAP_METHOD/PROPERTY/SIGNAL statements by hand, that could be easily automated from gir files. Therefore, if you decide you want to go with gobject-introspection, please do not hesitate to contact me if you need help :)
Best regards,Juan.
On Wed, Oct 1, 2014 at 1:10 AM, Marcin Kolny <marcin kolny gmail com> wrote:
Hi everyone,
I recently have talked with guys in #gstreamer irc channel, and they told me about gobject-introspection. I've heard about it earlier, but I've never interested about it, I even didn't know, what is a goal of this project, who should use it.
I spent a some time for reading about gobject-introspection, and now I'm wondering, why don't we use it in mm project instead of writing perl scripts, which actually not working in all cases.
Have somebody ever taken care about usage gobject-introspection in mm projects? If there is someone with experiences, could he share it with me?
Or maybe there is a serious reason to NOT use gobject-introspection in glibmm/gtkmm/gstreamermm/(other)-mm projects? Please tell me about it!
If there is no objection, to start using gobject-introspection, I'm ready for spending next few months for doing some researches, and e.g. porting glibmm project. But I need your opinion. Just tell me: "yeah, that's what we're waiting for! Go ahead" or "Don't waste your time, because..."
Especially, I'm counting on a mm active developers/maintainers, but everyone's opinion is very important for me.
--
Best regards,
Marcin Kolny
_______________________________________________