gorgée Tutoriel

SWIG (Simplified Wrapper and Interface Generator) est un outil permettant d’encapsuler du code C et C++ dans une variété de langages cibles, permettant aux API C/C++ d’être utilisées dans d’autres langages.

SWIG analyse les fichiers d’en-tête et génère du code d’une manière qui dépend de la langue cible. La génération de code peut être contrôlée par le développeur dans le fichier d’interface SWIG ainsi que via les options de ligne de commande.

Dans le fichier d’interface, le développeur indique à SWIG quoi envelopper et comment. SWIG possède son propre système de préprocesseur et de nombreuses directives spéciales pour contrôler la manière dont les données, les classes et les fonctions sont encapsulées dans le langage cible. Certaines de ces directives sont générales et d’autres sont spécifiques à la langue cible.

Le typemap est au cœur du fonctionnement de SWIG. Les mappages de types sont des règles qui spécifient comment les types sont marshalés entre le code C et le langage cible. Les typesmaps peuvent être appliqués globalement à tout dans le fichier d’interface ou localement au cas par cas. Ils peuvent également être personnalisés si nécessaire.

Une fois que SWIG est exécuté sur le fichier d’interface, il produit un fichier C ou C++ qui est le wrapper. Ce fichier doit être compilé et lié au programme C/C++ ou à la bibliothèque statique avec laquelle le wrapper est censé s’interfacer pour produire une bibliothèque partagée. Cette bibliothèque est à son tour utilisée par le langage cible.

RTFM

On ne saurait trop insister sur le fait que SWIG est déjà livré avec un [excellent manuel de documentation][1]. Celui-ci est très détaillé d’une part, couvre [l’installation][2], et comporte de nombreux exemples concrets sous forme d’extraits de code, dont un “hello world” complet [exemple SWIG][3].

Mais surtout, il explique également [1.7 Comment éviter de lire le manuel][4] :

Si vous détestez lire des manuels, jetez un coup d’œil à la “[Introduction][5]” qui contient quelques exemples simples. Ces exemples contiennent environ 95% de tout ce que vous devez savoir pour utiliser SWIG. Après cela, utilisez simplement les chapitres spécifiques à la langue comme référence. La distribution SWIG est également livrée avec un grand répertoire d’exemples qui illustrent différents sujets.

[1] : http://www.swig.org/Doc3.0/ [2] : http://www.swig.org/Doc3.0/Preface.html#Preface_installation [3] : http://www.swig.org/Doc3.0/Introduction.html#Introduction_nn4 [4] : http://www.swig.org/Doc3.0/Preface.html#Preface_nn8 [5] : http://www.swig.org/Doc3.0/Introduction.html#Introduction