Я пытаюсь сделать библиотеку C ++ доступной как модуль Python. Кажется, SIP - лучший инструмент для работы. (Если не так, поправьте меня.)
Один класс выглядит так, как будто программист пытался обойти отсутствие у c динамической типизации:
class Item{
private:
enum ITEMTYPE{TYPE_INT,TYPE_FLOAT,TYPE_INT_ARRAY,TYPE_FLOAT_ARRAY};
enum ITEMTYPE type;
int intValue;
int* intArrayValue;
float floatValue;
float* floatArrayValue;
public:
enum ITEMTYPE getType();
int getItemCount();
int getIntValue();
int* getIntArrayValue();
float getFloatValue();
float* getFloatArrayValue();
...
};
Я нигде не могу найти документацию, в которой говорится, как обрабатывать функции, возвращающие массивы. Как минимум, я хотел бы иметь возможность вызывать getIntArrayValue () из Python. Еще лучше было бы иметь одну функцию Python, которая автоматически вызывает getType (), затем вызывает один из методов get ??? Value (), чтобы получить значение (и, если необходимо, вызывает getItemCount (), чтобы определить длину массива, обрабатывая массивы как NumPy или кортежи.
Мой текущий файл .sil выглядит так:
class Item{
%TypeHeaderCode
#include<Item.h>
%End
public:
enum ITEMTYPE{
TYPE_INT=0,
TYPE_FLOAT=1,
TYPE_INT_ARRAY=2,
TYPE_FLOAT_ARRAY=3,
};
ITEMTYPE getType();
int getItemCount();
int getIntValue();
//int*getIntArrayValue();
float getFloatValue();
//float*getFloatArrayValue();
};
Заранее спасибо. Я так долго искал, но пришел пустым.