Передача bool по ссылке с использованием SWIG и Python - PullRequest
0 голосов
/ 08 декабря 2010

Я обернул API библиотеки C ++ с помощью SWIG, который хорошо работает, но я озадачен параметром "bool &".

Исходный API выглядит следующим образом:

void foo (bool & bar);

, когда я вызываю его из Python, _wrap.cxx выпадает из процесса переносаat

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

Другими словами, swig не может преобразовать то, что я передаю, в указатель bool.

Я пытаюсь вызвать его из Python, вот так:

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

Есть ли для этого простое исправление карты типов?

1 Ответ

1 голос
/ 08 декабря 2010

Это должно работать:

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

Всякий раз, когда SWIG видит параметр bool & bar, он должен обрабатывать его как параметр входа / выхода.Если он нужен только в качестве выходного параметра, используйте OUTPUT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...