[C++-sig] how to convert c++ objects to Python?

Domenico Andreoli cavok at filibusta.crema.unimi.it
Tue Aug 12 05:15:21 CEST 2003


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




More information about the Cplusplus-sig mailing list