You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.0 KiB
118 lines
3.0 KiB
/* ----------------------------------------------------------------------------- |
|
* See the LICENSE file for information on copyright, usage and redistribution |
|
* of SWIG, and the README file for authors - http://www.swig.org/release.html. |
|
* |
|
* embed15.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 it's 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); |
|
} |
|
|
|
%} |
|
|
|
|
|
|
|
|
|
|