C++ライブラリをPythonモジュールとして利用できるようにしようとしています。SIPはその仕事に最適なツールのようです。(間違っている場合は、訂正してください。)
1つのクラスは、プログラマーが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();
...
};
配列を返す関数の処理方法を説明しているドキュメントはどこにも見つかりません。少なくとも、PythonからgetIntArrayValue()を呼び出せるようにしたいと思います。さらに良いのは、getType()を自動的に呼び出してからget ??? Value()の1つを呼び出して値を取得する単一のPython関数を用意することです(必要に応じて、getItemCount()を呼び出して配列の長さを決定し、配列を処理しますnumpyまたはtuplesとして。
現在の.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();
};
前もって感謝します。私は一生懸命探してきましたが、空っぽになりました。