SMOKE is a introspective wrapper around the Qt and KDE frameworks.
All classes, all methods, with all arguments, along with various flags reflecting staticness, virtuality, etc. are stored into cross-referencing arrays for fast lookups. One can thus read (and call) the whole Qt API by simply reading/searching these arrays.
J'avais meme lu a l'epoque (sur dot.kde quand les premiers bindings ont ete developpes par Richard Dale) qu'il etait techniquement plus facile de faire un binding automatise pour C++ que C. (En revanche a la mano c'est plus facile avec du C d'apres ce que j'ai compris).
C++ est plus verbeux et donne plus "d'informations" que le language C ou beaucoup de choses sont implicites. Par en C++ il y a toujours un constructeur et un destructeur, le C ne comporte pas cette sémantique et donc il faut utiliser des constructions implicites du type toto_new(), toto_delete()
Bref comme on a plus d'infos en C++, il est plus facile de creer automatiquement un binding.
[^] # Re: Un air de renouveau, oui, mais de quelle année ?
Posté par tanguy_k (site web personnel) . En réponse à la dépêche GNOME 2.24 : un air de renouveau. Évalué à 6.
Voici l'astuce que t'as loupée :
http://techbase.kde.org/Development/Languages/Smoke
SMOKE is a introspective wrapper around the Qt and KDE frameworks.
All classes, all methods, with all arguments, along with various flags reflecting staticness, virtuality, etc. are stored into cross-referencing arrays for fast lookups. One can thus read (and call) the whole Qt API by simply reading/searching these arrays.
J'avais meme lu a l'epoque (sur dot.kde quand les premiers bindings ont ete developpes par Richard Dale) qu'il etait techniquement plus facile de faire un binding automatise pour C++ que C. (En revanche a la mano c'est plus facile avec du C d'apres ce que j'ai compris).
C++ est plus verbeux et donne plus "d'informations" que le language C ou beaucoup de choses sont implicites. Par en C++ il y a toujours un constructeur et un destructeur, le C ne comporte pas cette sémantique et donc il faut utiliser des constructions implicites du type toto_new(), toto_delete()
Bref comme on a plus d'infos en C++, il est plus facile de creer automatiquement un binding.