Outils pour utilisateurs

Outils du site


lib:swig

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lib:swig [2018/05/13 21:28] – Ajout de "Can't wrap 'xxx' unless renamed to a valid identifier." rootlib:swig [2022/09/13 10:04] (Version actuelle) – Ajout des sites web root
Ligne 1: Ligne 1:
 +[[https://www.swig.org/|Site web]] [[https://github.com/swig/swig|Github]]
 +
 ====Utilisation de base==== ====Utilisation de base====
 <file raw libmod.i> <file raw libmod.i>
Ligne 40: Ligne 42:
 C'est le cas des opérateurs ''operator !=''. Ajouter en début de fichier après le ''%module ...'' C'est le cas des opérateurs ''operator !=''. Ajouter en début de fichier après le ''%module ...''
   %rename(operator_not_equal) operator!=;   %rename(operator_not_equal) operator!=;
 +
 +====Multiple inheritance is not supported in====
 +Ajouter après ''%module'' :
 +  %include <swiginterface.i>
 +
 +Soit la ClasseA
 +<code cpp>
 +class ClassA : public Number, public Base<int> {}
 +</code>
 +
 +Ajouter:
 +  %interface_impl(Number);
 +  %include "number.h"
 +  %interface_impl(Base);
 +  %include "base.h"
 +  %rename(base_int_ren) Base<int>;
 +  %template(base_int) Base<int>;
 +
 +<WRAP center round info 60%>
 +Je n'ai pas testé mais je conseille de mettre un nom différent lors du ''rename'' et du ''template''.
 +</WRAP>
 +
 +Si ''Number'' possède un parent, ce parent doit aussi être déclaré en interface.
 +
 +<WRAP center round alert 60%>
 +Par contre, il y a un soucis si une classe avec template doit être déclarée en interface :
 +<code raw>
 +%interface_impl(InterfaceVisitable);
 +// Nécessaire car swiginterface.i fait NomDeLaClasseAvecTemplateImplSwigImpl.
 +// InterfaceVisitable<Number>SwigImpl est logiquement invalide sans rename
 +%rename(interface_visitable_number_ren) InterfaceVisitable<Number>;
 +// Mais lors de la déclaration du %template, c'est l'échec.
 +%template(interface_visitable_number) InterfaceVisitable<Number>
 +</code>
 +J'ai le résultat :
 +  Error: The interface feature name 'interface_visitable_number_ren' for proxy class 'interface_visitable_number_ren' is already defined in the generated target language module in scope ''.
 +</WRAP>
 +
lib/swig.1526239693.txt.gz · Dernière modification : 2018/05/13 21:28 de root