Embed extended Python

Mathieu Tremblay mtremblay at golemlabs.com
Fri Sep 13 10:56:32 EDT 2002


Hello, 
   I am quite new to Python and I'd like to embed extended python. 
The problem is that the documentation I can find on the internet is
always related to C standard types and not to C++ objects.

   To extend python I use the really good SWIG tool and everything is
fine.  The problem comes when I try to call a python script that takes
as an argument one of the class that I have defined in C++ through
swig.

Exemple:
 C++ class extended to python with SWIG, through the module wheel: 
   CWheel
   {
     CWheel(){}
     ~CWheel(){}
     printWheel()
     {
       printf("I am a wheel");
     }
   };
 Now, let's suppose that the module is successfully exported and can
be used in python.  An example of simple python script would be :
  import wheel
 
  def thefunction(awheel):
     awheel.printWheel()

 Calling this function directly from python (supposing we provide the
correct argument) works perfectly.  The problem comes when I want to
call this script from C++.  Maybe It is a stupid question but here it
is: How do you pass an existing CWheel as an argument to the function
from C++??? How do you wrap a CWheel to a PyObject?
 I guess the method would be to use the function
PyObject_CallObject(pFunc, pArgs); the pArgs being a PyTuple where I
can set a PyObject to a position X.  The problem is that all the
examples that I find convert int, char*, long, double etc. to PyObject
with built in python functions but no different/user defined class.
 Anybody can help?

 Thanks a lot,
  Mathieu



More information about the Python-list mailing list