|
Boost : |
From: Marco Borm (mb.ml.boost_at_[hidden])
Date: 2005-03-10 06:16:14
David Abrahams wrote:
> Marco Borm <mb.ml.boost_at_[hidden]> writes:
>
>
>>It is also possible to do the following in my c++
>>object-code: "ret = boost::python::call<int>(PyFunction.ptr(), this );"
>
>
> But not so elegant or safe as:
> ret = boost::python::extract<int>( PyFunction( *this ) );
thats true :-)
>>But now my problem: boost copies the object and passes only that
>>copy to the function. Is it and how is it possible to make the
>>object accessible to the function within the python-script?
>
>
> ret = boost::python::extract<int>( PyFunction( boost::ref(*this) ) );
To clarify: "this" isn't an instance of an boost/python object.
The Instance is created somewhere else without boost/python.
Because this, the code you gave me crashs in wrapper_base.hpp on an
"dynamic_cast<wrapper_base const volatile*>(x)"
An example for what I want:
class CppClass {
public:
void foo();
void bar();
....
};
BOOST_PYTHON_MODULE(test)
{
boost::python::class_<CppClass>("CppClass", boost::python::no_init)
.def("bar", &CppClass::bar)
...
;
}
void CppClass::foo()
{
....
// call "foohelper" in python-script
ret = boost::python::extract<int>( PyFunction( boost::ref(*this) ) );
....
}
// python script
def foohelper(cppobj):
cppobj.bar()
return 1234;
main()
{
CppClass* object = new CppClass;
object->foo();
}
Thanks for help!
Marco Borm
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk