symbian-qemu-0.9.1-12/python-2.6.1/Demo/embed/demo.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 /* Example of embedding Python in another program */
       
     2 
       
     3 #include "Python.h"
       
     4 
       
     5 void initxyzzy(void); /* Forward */
       
     6 
       
     7 main(int argc, char **argv)
       
     8 {
       
     9 	/* Pass argv[0] to the Python interpreter */
       
    10 	Py_SetProgramName(argv[0]);
       
    11 
       
    12 	/* Initialize the Python interpreter.  Required. */
       
    13 	Py_Initialize();
       
    14 
       
    15 	/* Add a static module */
       
    16 	initxyzzy();
       
    17 
       
    18 	/* Define sys.argv.  It is up to the application if you
       
    19 	   want this; you can also let it undefined (since the Python 
       
    20 	   code is generally not a main program it has no business
       
    21 	   touching sys.argv...) */
       
    22 	PySys_SetArgv(argc, argv);
       
    23 
       
    24 	/* Do some application specific code */
       
    25 	printf("Hello, brave new world\n\n");
       
    26 
       
    27 	/* Execute some Python statements (in module __main__) */
       
    28 	PyRun_SimpleString("import sys\n");
       
    29 	PyRun_SimpleString("print sys.builtin_module_names\n");
       
    30 	PyRun_SimpleString("print sys.modules.keys()\n");
       
    31 	PyRun_SimpleString("print sys.executable\n");
       
    32 	PyRun_SimpleString("print sys.argv\n");
       
    33 
       
    34 	/* Note that you can call any public function of the Python
       
    35 	   interpreter here, e.g. call_object(). */
       
    36 
       
    37 	/* Some more application specific code */
       
    38 	printf("\nGoodbye, cruel world\n");
       
    39 
       
    40 	/* Exit, cleaning up the interpreter */
       
    41 	Py_Exit(0);
       
    42 	/*NOTREACHED*/
       
    43 }
       
    44 
       
    45 /* A static module */
       
    46 
       
    47 /* 'self' is not used */
       
    48 static PyObject *
       
    49 xyzzy_foo(PyObject *self, PyObject* args)
       
    50 {
       
    51 	return PyInt_FromLong(42L);
       
    52 }
       
    53 
       
    54 static PyMethodDef xyzzy_methods[] = {
       
    55 	{"foo",		xyzzy_foo,	METH_NOARGS,
       
    56 	 "Return the meaning of everything."},
       
    57 	{NULL,		NULL}		/* sentinel */
       
    58 };
       
    59 
       
    60 void
       
    61 initxyzzy(void)
       
    62 {
       
    63 	PyImport_AddModule("xyzzy");
       
    64 	Py_InitModule("xyzzy", xyzzy_methods);
       
    65 }