Передача массива Python в вектор C ++ с использованием Swig

У меня есть массив объектов на Python

[obj1, obj2, obj3]

и я хочу передать их функции C ++ для выполнения некоторых вычислений. Я использую SWIG для написания своего интерфейса. Тип класса переданного объекта уже определен в C ++.

Как лучше всего это сделать?


person Fergal    schedule 15.12.2008    source источник
comment
лучший способ с учетом каких ограничений? Разрешены ли внешние библиотеки или вы хотите использовать специальные средства Python?   -  person Max Lybbert    schedule 15.12.2008


Ответы (1)


Это зависит от того, написана ли ваша функция и не может быть изменена, и в этом случае вам может потребоваться проверить документацию Swig, чтобы узнать, есть ли уже карта типов из PyList в std :: vector (я думаю, что есть). Если нет, то использование PyObject * в качестве аргумента функции и использование Python C API для управления списками должно работать нормально. У меня пока с этим проблем не было. Для самодокументирования я рекомендую присвоить PyObject * некоторый ожидаемый тип, например «PythonList», чтобы параметры имели какое-то значение.

Это также может быть полезно:

Как выставить std :: vector ‹int› как Список Python с использованием SWIG?

person Michel    schedule 15.12.2008