6
votes

Swig - Wrap C String Array to Python Liste

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: xxx > Swig enveloppe automatiquement certains_string à une chaîne de python.

Que dois-je mettre dans le fichier d'interface Swig afin que je puisse accéder à my_array en python en tant que Liste de chaîne Python régulière ['String1', 'String2']?

J'ai utilisé Typemap comme sugetd comme sugetd: xxx

mais cela n'a toujours pas fonctionné . En Python, la variable My_Array apparaît comme SwigpyObject: _20afba010000000000_p_p_char.

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?

Des idées?


0 commentaires

3 Réponses :


-1
votes

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 **


0 commentaires

1
votes

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.


0 commentaires

0
votes

Je ne suis pas un expert à ce sujet, mais je pense:

%typemap(python,out) struct Foo {


0 commentaires