| Index: swig/Lib/python/embed.i
|
| ===================================================================
|
| --- swig/Lib/python/embed.i (revision 0)
|
| +++ swig/Lib/python/embed.i (revision 0)
|
| @@ -0,0 +1,115 @@
|
| +//
|
| +// embed.i
|
| +// SWIG file embedding the Python interpreter in something else.
|
| +// This file is based on Python-1.5. It will not work with
|
| +// earlier versions.
|
| +//
|
| +// This file makes it possible to extend Python and all of its
|
| +// built-in functions without having to hack its setup script.
|
| +//
|
| +
|
| +
|
| +#ifdef AUTODOC
|
| +%subsection "embed.i"
|
| +%text %{
|
| +This module provides support for building a new version of the
|
| +Python executable. This will be necessary on systems that do
|
| +not support shared libraries and may be necessary with C++
|
| +extensions. This file contains everything you need to build
|
| +a new version of Python from include files and libraries normally
|
| +installed with the Python language.
|
| +
|
| +This module will automatically grab all of the Python modules
|
| +present in your current Python executable (including any special
|
| +purpose modules you have enabled such as Tkinter). Thus, you
|
| +may need to provide additional link libraries when compiling.
|
| +
|
| +This library file only works with Python 1.5. A version
|
| +compatible with Python 1.4 is available as embed14.i and
|
| +a Python1.3 version is available as embed13.i. As far as
|
| +I know, this module is C++ safe.
|
| +%}
|
| +#else
|
| +%echo "embed.i : Using Python 1.5"
|
| +#endif
|
| +
|
| +%wrapper %{
|
| +
|
| +#include <Python.h>
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C"
|
| +#endif
|
| +void SWIG_init(); /* Forward reference */
|
| +
|
| +#define _PyImport_Inittab swig_inittab
|
| +
|
| +/* Grab Python's inittab[] structure */
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C" {
|
| +#endif
|
| +#include <config.c>
|
| +
|
| +#undef _PyImport_Inittab
|
| +
|
| +/* Now define our own version of it.
|
| + Hopefully someone does not have more than 1000 built-in modules */
|
| +
|
| +struct _inittab SWIG_Import_Inittab[1000];
|
| +
|
| +static int swig_num_modules = 0;
|
| +
|
| +/* Function for adding modules to Python */
|
| +
|
| +static void swig_add_module(char *name, void (*initfunc)()) {
|
| + SWIG_Import_Inittab[swig_num_modules].name = name;
|
| + SWIG_Import_Inittab[swig_num_modules].initfunc = initfunc;
|
| + swig_num_modules++;
|
| + SWIG_Import_Inittab[swig_num_modules].name = (char *) 0;
|
| + SWIG_Import_Inittab[swig_num_modules].initfunc = 0;
|
| +}
|
| +
|
| +/* Function to add all of Python's build in modules to our interpreter */
|
| +
|
| +static void swig_add_builtin() {
|
| + int i = 0;
|
| + while (swig_inittab[i].name) {
|
| + swig_add_module(swig_inittab[i].name, swig_inittab[i].initfunc);
|
| + i++;
|
| + }
|
| +#ifdef SWIGMODINIT
|
| + SWIGMODINIT
|
| +#endif
|
| + /* Add SWIG builtin function */
|
| + swig_add_module(SWIG_name, SWIG_init);
|
| +}
|
| +
|
| +#ifdef __cplusplus
|
| +}
|
| +#endif
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C" {
|
| +#endif
|
| +
|
| +extern int Py_Main(int, char **);
|
| +
|
| +#ifdef __cplusplus
|
| +}
|
| +#endif
|
| +
|
| +extern struct _inittab *PyImport_Inittab;
|
| +
|
| +int
|
| +main(int argc, char **argv) {
|
| + swig_add_builtin();
|
| + PyImport_Inittab = SWIG_Import_Inittab;
|
| + return Py_Main(argc,argv);
|
| +}
|
| +
|
| +%}
|
| +
|
| +
|
| +
|
| +
|
|
|