2011-03-06 1 views
0

私はC++ライブラリをPythonモジュールとして利用しようとしています。 SIPは仕事にとって最高のツールだと思われます。SIPはどのようにしてintを返す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(); 
    ... 
}; 

私は関数を処理する方法を述べているどこかのドキュメントを見つけることができません:(。間違っている場合は、私を修正してください)

一つのクラスは、プログラマが動的型付けのCの不足を回避しようとしていたように見えますその配列を返します。少なくとも、私はPythonからgetIntArrayValue()を呼び出すことができるようにしたいと思います。 getType()を自動的に呼び出す単一のPython関数を持っていて、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(); 
}; 

おかげで、私は一生懸命検索してきたが、空が出ている

答えて

0

私はドン」。私はswipを使ってPythonモジュールにC++をラップしていましたが、それはかなり簡単でした。swigは標準的なC++データ型を扱うことができます(標準ライブラリ含むers)が自動的に表示されます。

関連する問題