On 11/15/2011 09:51 AM, Jérôme Laheurte wrote:

But you can put several submodules in an extension module, as a
workaround (see code below). I always wondered if that was possible
with boost::python or SWIG ?

Interesting, I hadn't thought of that.

Anyhow, I believe it should be possible (but not very useful) with both; you can make the inner module, but it's just a Python C-API module and you have to manually add SWIG or Boost.Python-wrapped functions and types to it.

Jim




#include<Python.h>

static PyObject *myfunc(PyObject *self, PyObject *args) { if
(!PyArg_ParseTuple(args, "|myfunc")) return NULL;

printf("Hello, world\n");

Py_INCREF(Py_None); return Py_None; }

static PyMethodDef functions[] = { { "myfunc", (PyCFunction)myfunc,
METH_VARARGS, "" }, { NULL } };

static PyMethodDef nofunctions[] = { { NULL } };

void inittestmod() { PyObject *mdl, *submdl;

if (!(mdl = Py_InitModule3("testmod", nofunctions, ""))) return;

if (!(submdl = Py_InitModule3("foo", functions, ""))) return;

Py_INCREF(submdl); PyModule_AddObject(mdl, "foo", submdl); }

After building,

import testmod testmod.foo.myfunc()
Hello, world


_______________________________________________ Cplusplus-sig mailing
list Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to