Boost logo

Boost Users :

From: cavok_at_[hidden]
Date: 2003-08-11 22:15:21


hi,

i have a c++ function that returns a reference to a c++ object. i want
to expose this function to Python making it return the Python version
of the object. i'm using Boost.Python.

i understood that i have to use to_python_converter but the body of the
A_to_Python::convert function is mystery for me. Boost documentation's
example solves the problem in a manner i'm not able to apply to my case.
my A object is complex and i'd like to somewhat (re)use the class_ object.

---------------- CUT HERE ----------------
#include <boost/python.hpp>

using namespace boost::python;

struct A
{
        void f() {}
};

A a;

struct A_to_Python
{
        static PyObject* convert(const A& a)
        {
                // documentation says:
                // return PyObject_New(noddy_NoddyObject, &noddy_NoddyType);
        }
};

A& get_A() { return a; }

BOOST_PYTHON_MODULE(hello)
{
        class_<A>("A")
                .def("f", &A::f)
        ;

        to_python_converter<A, A_to_Python>();

        def("get_A", get_A, return_value_policy<reference_existing_object>());
}
---------------- CUT HERE ----------------

please, somebody enlighten me.

many thanks
domenico

-----[ Domenico Andreoli, aka cavok
 --[ http://filibusta.crema.unimi.it/~cavok/gpgkey.asc
   ---[ 3A0F 2F80 F79C 678A 8936 4FEE 0677 9033 A20E BC50


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net