Simple question: How to pass a C++ class reference to a callback?
T. Panbru
panbru at comcast.net
Tue Sep 2 09:11:13 EDT 2003
Try encapsulating your C++ class reference in a CObject, using:
PyObject* PyCObject_FromVoidPtr( void* cobj, void (*destr)(void *))
void* PyCObject_AsVoidPtr( PyObject* self)
and so forth, to go back and forth between the C++ and Python realms.
Check out the Python docs at:
http://www.python.org/doc/2.3/api/cObjects.html
Tim
> Harri Pesonen wrote:
> How do I pass the calling C++ class reference (or anything) to a callback?
> My code is:
>
> static PyObject*
> emb_Set(PyObject *self, PyObject *args)
> {
> char *key, *value;
> if(!PyArg_ParseTuple(args, "ss", &key, &value))
> return NULL;
> // do something with the C++ class here
> // how the get the class instance pointer?
> Py_INCREF(Py_None);
> return Py_None;
> }
>
> static PyMethodDef EmbMethods[] = {
> {"Set", emb_Set, METH_VARARGS, "Sets the given variable."},
> {NULL, NULL, 0, NULL}
> };
>
> in C++ class:
>
> Py_Initialize();
> Py_InitModule("test", EmbMethods);
> PyRun_SimpleString(script);
> Py_Finalize();
>
> Harri
More information about the Python-list
mailing list