[C++-sig] Converting C++ Class into Python Binding
clay at idleengineer.net
Wed Feb 16 19:00:07 CET 2005
Ralf W. Grosse-Kunstleve wrote:
>I am not competent enough to give you a definitive answer, but I believe this
>should get you close:
> return boost::python::object(bar);
>I don't know how to control pass-by-reference vs. pass-by-value. I'd look for
>"boost::ref" in the tutorial since this is the best clue I have off the top of
This is what I've seen before, but I just need to be sure that a copy of
the object is not made (which is usually the case in python). If I get
this working I can just test it.
>Also, this is unusual in a Boost.Python wrapper:
>>get_foo_object( PyObject *self, PyObject *args )
>Why don't you use the "native" signature instead?
This is how you would do it with the Python/C api. I seem to be having
difficulty making the transition to boost. I have a decent grasp of how
to wrap C++ objects objects into a python object, but what's more fuzzy
is working with the interpreter using boost. I'm trying to embed Python
into my application, but I get all the way to the point where I need to
start returning references to C++ objects and I get stuck. My main flow is:
0) I already have library Foo bound in both Python and C++ (import Foo
works in python, in C++ I include Foo headers).
1) Build a new module for this application to expose the data I'm trying
to share. (get_foo_object would be one of the bound methods so that
python could call "import new_module", "f = new_module.get_foo_object()"
and from there start manipulating f)
2) Startup the interpreter.
3) Load the module I created in 1 with Py_InitModule.
4) Use python scripts to call methods in this new module to interact
with the data.
The only problem I seem to be having is during #1, trying to convert
from a C++ object to its wrapper. I'll try return
Am I going about this the wrong way? Should I be using pure boost
instead of trying to do this with the Python/C API?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Cplusplus-sig