[C++-sig] Convert C++ Class to exposed class and back

Marcus Jannes jannes80 at hotmail.de
Tue Feb 12 13:24:23 CET 2008


Hi again,

i know the following code should work:

double pycall(double d){
        PyObject *py_obj;
        double c_result;
        py_obj = Py_BuildValue("d",d);
        c_result = PyFloat_AS_DOUBLE(py_obj);
        return c_result;
};

But how can i use a boost.python exposed class with it (i.e.: ExpClass):

c_class pycall(c_class c){
        PyObject *py_obj;
        c_class c_result;
        py_obj = PyBuildValue("O",c); //does not work! Provide converter function with "O&" argument ?
        c_result = SomeConverterToC(py_obj); //???
        return c_result;
};

BOOST_PYTHON_MODULE(MyModule){
        {//::ExpClass
         typedef bp::class_< ExpClass> ExpClass_exposer_t;
         ExpClass_exposer_t ExpClass_exposer = ExpClass_exposer_t( "PyExpClass" );
         bp::scope ExpClass_scope( ExpClass_exposer );

         //constructors:
         ExpClass_exposer.def( bp::init<>() ); //default constructor
         ExpClass_exposer.def( bp::init< ExpClass const &>(( bp::arg("r") )) ); //copy-constructor
         }
};

Thanks again for any help.

_________________________________________________________________
Kostenlose Messenger Emoticons! Hier downloaden!
http://messenger.live.de/mein/


More information about the Cplusplus-sig mailing list