Je me demandais quelle est la bonne façon d'envelopper une gamme de chaînes en C à une liste de python à l'aide de Swig.
Le tableau est à l'intérieur d'une structure: p> Que dois-je mettre dans le fichier d'interface Swig afin que je puisse accéder à my_array fort> en python en tant que Liste de chaîne Python régulière ['String1', 'String2']? P> J'ai utilisé Typemap comme sugetd comme sugetd: p> mais cela n'a toujours pas fonctionné . En Python, la variable My_Array apparaît comme SwigpyObject: _20afba010000000000_p_p_char. P> Je me demande si c'est parce que le char * ** est à l'intérieur d'une structure? Peut-être que j'ai besoin d'informer Swig ça? P> Des idées? P> P>
3 Réponses :
Je suis désolé d'avoir été légèrement hors sujet, mais s'il s'agit d'une option pour vous, je recommanderais vivement à l'aide de CTTYPES au lieu de Swig. Voici une question connexe que j'ai posée précédemment dans CTTPES Contexte: Passer une liste de chaînes à partir de Python / CTTYPES à C Fonction Attendance Char ** P>
Je ne pense pas qu'il existe une option pour gérer cette conversion automatiquement dans Swig. Vous devez utiliser manuellement la fonction de type Typemap de Swig et d'écrire un convertisseur de type. Vous trouverez ici une conversion de la liste Python vers Char ** http: // www. swig.org/doc1.3/python.html#pytHon_nnn59 Donc la moitié du travail est terminé. Ce que vous devez faire en ce moment, c'est de vérifier le reste de la documentation de Typemap et d'écrire Converter de Char ** à Python List. P>
Je ne suis pas un expert à ce sujet, mais je pense:
%typemap(python,out) struct Foo {