diff options
Diffstat (limited to 'Demo/embed/demo.c')
-rw-r--r-- | Demo/embed/demo.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Demo/embed/demo.c b/Demo/embed/demo.c index 418b225..9a1883f 100644 --- a/Demo/embed/demo.c +++ b/Demo/embed/demo.c @@ -4,6 +4,8 @@ static char *argv0; +void initxyzzy(); /* Forward */ + main(argc, argv) int argc; char **argv; @@ -14,6 +16,9 @@ main(argc, argv) /* Initialize the Python interpreter. Required. */ Py_Initialize(); + /* Add a static module */ + initxyzzy(); + /* Define sys.argv. It is up to the application if you want this; you can also let it undefined (since the Python code is generally not a main program it has no business @@ -26,6 +31,7 @@ main(argc, argv) /* Execute some Python statements (in module __main__) */ PyRun_SimpleString("import sys\n"); PyRun_SimpleString("print sys.builtin_module_names\n"); + PyRun_SimpleString("print sys.modules.keys()\n"); PyRun_SimpleString("print sys.argv\n"); /* Note that you can call any public function of the Python @@ -45,3 +51,27 @@ getprogramname() { return argv0; } + +/* A static module */ + +static PyObject * +xyzzy_foo(self, args) + PyObject *self; /* Not used */ + PyObject *args; +{ + if (!PyArg_ParseTuple(args, "")) + return NULL; + return PyInt_FromLong(42L); +} + +static PyMethodDef xyzzy_methods[] = { + {"foo", xyzzy_foo, 1}, + {NULL, NULL} /* sentinel */ +}; + +void +initxyzzy() +{ + PyImport_AddModule("xyzzy"); + Py_InitModule("xyzzy", xyzzy_methods); +} |