Benutzen einer mit swig gewrappten Klasse

23/09/2008 - 16:58 von tim.cramer | Report spam
Hallo,

ich würde gerne eine mit swig gewrappte Klasse A in einem anderen
handgeschriebenen Pythonmodul verwenden bzw. als PyObject zurück
geben.

Also z.B. so:
-ich habe in C++ eine "class A;", die z.B. so mit swig gewrappt wird:

%module modA
%{
%}

extern class classA{
public:
A();
void solve();
};

-eine Fkt. in meine handgeschriebene Modul sieht in etwa so aus:

static PyObject* create_A(FPobject *self, PyObject *args){
A myA = new A();
PyObject* pyA;
...
//füllen, bearbeiten von A
//jetzt möchte ich A in das gewrapptes PyObject "casten", so dass
von
//python aus die Methode "solve()" aufgerufen werden kann.
return pyA;
}

Kann mir jemand einen Tip geben, wie ich das machen kann? Mein
Hauptproblem ist glaube ich, dass ich nicht weiß, wie das
entsprechende (gewrappte) PyObject von A heißt

Grüße
Tim
 

Lesen sie die antworten

#1 Diez B. Roggisch
23/09/2008 - 17:36 | Warnen spam
wrote:

Hallo,

ich würde gerne eine mit swig gewrappte Klasse A in einem anderen
handgeschriebenen Pythonmodul verwenden bzw. als PyObject zurück
geben.

Also z.B. so:
-ich habe in C++ eine "class A;", die z.B. so mit swig gewrappt wird:

%module modA
%{
%}

extern class classA{
public:
A();
void solve();
};

-eine Fkt. in meine handgeschriebene Modul sieht in etwa so aus:

static PyObject* create_A(FPobject *self, PyObject *args){
A myA = new A();
PyObject* pyA;
...
//füllen, bearbeiten von A
//jetzt möchte ich A in das gewrapptes PyObject "casten", so dass
von
//python aus die Methode "solve()" aufgerufen werden kann.
return pyA;
}

Kann mir jemand einen Tip geben, wie ich das machen kann? Mein
Hauptproblem ist glaube ich, dass ich nicht weiß, wie das
entsprechende (gewrappte) PyObject von A heißt



PyObject *SWIG_NewPointerObj(void *ptr, swig_type_info *ty, int own)

aus der SWIG-Doku sieht so aus als ob es das gewuenschte waere. Woher du die
swig_type_info genau bekommest - kA, aber es gibt auch TypeMaps.

Guckst du hier:

http://www.swig.org/Doc1.3/Python.html#Python_nn64

Diez

Ähnliche fragen