diff options
Diffstat (limited to 'Demo/embed/demo.c')
| -rw-r--r-- | Demo/embed/demo.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/Demo/embed/demo.c b/Demo/embed/demo.c deleted file mode 100644 index 00c5a0e..0000000 --- a/Demo/embed/demo.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Example of embedding Python in another program */ - -#include "Python.h" - -void initxyzzy(void); /* Forward */ - -main(int argc, char **argv) -{ - /* Pass argv[0] to the Python interpreter */ - Py_SetProgramName(argv[0]); - - /* 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 leave it undefined (since the Python - code is generally not a main program it has no business - touching sys.argv...) - - If the third argument is true, sys.path is modified to include - either the directory containing the script named by argv[0], or - the current working directory. This can be risky; if you run - an application embedding Python in a directory controlled by - someone else, attackers could put a Trojan-horse module in the - directory (say, a file named os.py) that your application would - then import and run. - */ - PySys_SetArgvEx(argc, argv, 0); - - /* Do some application specific code */ - printf("Hello, brave new world\n\n"); - - /* 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.executable\n"); - PyRun_SimpleString("print sys.argv\n"); - - /* Note that you can call any public function of the Python - interpreter here, e.g. call_object(). */ - - /* Some more application specific code */ - printf("\nGoodbye, cruel world\n"); - - /* Exit, cleaning up the interpreter */ - Py_Exit(0); - /*NOTREACHED*/ -} - -/* A static module */ - -/* 'self' is not used */ -static PyObject * -xyzzy_foo(PyObject *self, PyObject* args) -{ - return PyInt_FromLong(42L); -} - -static PyMethodDef xyzzy_methods[] = { - {"foo", xyzzy_foo, METH_NOARGS, - "Return the meaning of everything."}, - {NULL, NULL} /* sentinel */ -}; - -void -initxyzzy(void) -{ - PyImport_AddModule("xyzzy"); - Py_InitModule("xyzzy", xyzzy_methods); -} |
