From 81e84c95c5c3701fb3ede3b67d21004500387faf Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 25 Dec 1997 04:51:41 +0000 Subject: Just for fun, add a static module, "xyzzy" -- show that calling its initxyzzy() works. --- Demo/embed/demo.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) 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); +} -- cgit v0.12