2010-12-08 27 views
0

J'ai enveloppé une API de bibliothèque C++ en utilisant SWIG, qui fonctionne bien, mais je suis perplexe par un paramètre "bool &".Passage bool par référence en utilisant SWIG et Python

L'API originale ressemble à ceci:

void foo (bool & bar);

quand je l'appelle de Python, le _wrap.cxx gouttes du processus d'emballage à

int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_bool, 0); 
    _v = SWIG_CheckState(res); 
    if (_v) { 

En d'autres termes, rasade ne peut pas convertir ce que je passe pour un pointeur bool.

Je suis en train de l'appeler de Python, comme ceci:

obj = LibObject() 
    x = 0 
    obj.foo(x) 

Y at-il une solution simple typemap pour cela?

Répondre

1

Cela devrait fonctionner:

%include <typemaps.i> 
%apply bool & INOUT { bool & bar }; 

Chaque fois que SWIG voit un paramètre bool & bar, il faut le traiter comme un paramètre in/out. Si vous en avez seulement besoin comme paramètre de sortie, utilisez OUTPUT.