• [^] # Re: programmer des nouvelles librairies

    Posté par (Mastodon) . En réponse au journal Qui traite du D de Digitalmars, et dans une moindre mesure du français chez les jeunes, ainsi que du vote des personnes ayant double nationalité. Évalué à 2.

    Pour les bindings, ça revient en gros à écrire des fonctions qui effectuent les conversions entre les données du langage 1 vers celles du langage 2, appellent les fonctions voulues du langage 2, et refont la conversion dans l'autre sens. Dans certains cas, c'est automatisable.

    De mémoire, et pour faire un binding d'une lib en C vers du ruby, ça revient à coder en C des fonctions qui appellent des macros pour faire les conversions, dans ce style:

    TYPE_RUBY ma_fonction(TYPE_RUBY arg) {
    type_c arg_c = CONVERSION(arg);
    TYPE_RUBY retour = ma_fonction_c(arg_c);
    return TYPE_RUBY;
    }

    Ensuite dans une fonction dont le nom est standardisé, tu "connectes" les fonctions C définies comme ça à des noms de méthodes de classe ou d'instance, ce qui ressemble à:

    fonction_livree_par_ruby("toto", &ma_fonction, nombre_arguments);
    fonction_livree_par_ruby("toto=", &ma_fonction, nombre_arguments);
    fonction_livree_par_ruby("[]", &ma_fonction, nombre_arguments);


    Ensuite, pour écrire une bibliothèque pour un langage... ça dépend de ce que tu veux écrire. Pour écrire un parseur XML, tu n'as pas besoin d'utiliser un langage de bas niveau, tu possèdes déjà toutes les primitives nécessaires. Pour écrire une bibliothèque de protocoles réseau, si tu n'as aucune primitive réseau, il te faudra à un moment ou un autre "redescendre" au niveau du C pour utiliser ses primitives réseau, mais tu n'as pas forcément à coder toute la lib comme ça.