Tout à fait, la plupart des bindings (au moins R, OCaml, Octace et donc Mono) font déjà de la génération de code: ça passe par un fichier XMl ou texte, qui contient une description des objets. Le parseur d'en-têtes GAPI est également un gros progrès, mais il est quand même nécessaire de retoucher. Force est de constater qu'il y a encore du travail manuel dans la plupart des langages, puisque la couverture des apis se limite généralement à GTK.
L'intérêt de l'introspection est que ç'est quelque chose de complètement automatique qui se fonde sur le code compilé qui lui est 100% sûr et sans ambiguité. Le module http://cvs.gnome.org/viewcvs/gobject-introspection/(...) dans le CVS de gnome qui a été utilisé pour poppler génère un XML directement à partir des binaires, des applications comme glade et la démo gtk+/tests/testfilechooser obtiennent ces infos en linkant contre gtk.
Ça paraissait une chose évidente à faire depuis le concept de GType qu'a la glib, mais il a fallu réviser les API pour que GObject ou GType soit utilisé partout (travail de Mathias Clasen - http://bugzilla.gnome.org/show_bug.cgi?id=139486(...) ), et écrire le compilateur binaires->xml (gobject-introspection dans le CVS).
Une possibilité encore à explorer (et absolument pas déjà vue, dites-moi si je me trompe ;) ) est d'utiliser la version runtime de l'introspection pour générer les bindings au vol: des langages comme python supportent bien l'ajout de méthodes aux objets pendant l'exécution, ce qui permet d'utiliser libmachin sans même avoir à installer une libmachin-python.
[^] # Re: du déjà vu
Posté par Tobu . En réponse à la dépêche Toutes les API GNOME dans tous les langages et pour bientôt ?. Évalué à 7.
L'intérêt de l'introspection est que ç'est quelque chose de complètement automatique qui se fonde sur le code compilé qui lui est 100% sûr et sans ambiguité. Le module http://cvs.gnome.org/viewcvs/gobject-introspection/(...) dans le CVS de gnome qui a été utilisé pour poppler génère un XML directement à partir des binaires, des applications comme glade et la démo gtk+/tests/testfilechooser obtiennent ces infos en linkant contre gtk.
Ça paraissait une chose évidente à faire depuis le concept de GType qu'a la glib, mais il a fallu réviser les API pour que GObject ou GType soit utilisé partout (travail de Mathias Clasen - http://bugzilla.gnome.org/show_bug.cgi?id=139486(...) ), et écrire le compilateur binaires->xml (gobject-introspection dans le CVS).
Une possibilité encore à explorer (et absolument pas déjà vue, dites-moi si je me trompe ;) ) est d'utiliser la version runtime de l'introspection pour générer les bindings au vol: des langages comme python supportent bien l'ajout de méthodes aux objets pendant l'exécution, ce qui permet d'utiliser libmachin sans même avoir à installer une libmachin-python.