1/* ----------------------------------------------------------------------------- 2 * See the LICENSE file for information on copyright, usage and redistribution 3 * of SWIG, and the README file for authors - http://www.swig.org/release.html. 4 * 5 * embed15.i 6 * 7 * SWIG file embedding the Python interpreter in something else. 8 * This file is based on Python-1.5. It will not work with 9 * earlier versions. 10 * 11 * This file makes it possible to extend Python and all of its 12 * built-in functions without having to hack its setup script. 13 * ----------------------------------------------------------------------------- */ 14 15#ifdef AUTODOC 16%subsection "embed.i" 17%text %{ 18This module provides support for building a new version of the 19Python executable. This will be necessary on systems that do 20not support shared libraries and may be necessary with C++ 21extensions. This file contains everything you need to build 22a new version of Python from include files and libraries normally 23installed with the Python language. 24 25This module will automatically grab all of the Python modules 26present in your current Python executable (including any special 27purpose modules you have enabled such as Tkinter). Thus, you 28may need to provide additional link libraries when compiling. 29 30This library file only works with Python 1.5. A version 31compatible with Python 1.4 is available as embed14.i and 32a Python1.3 version is available as embed13.i. As far as 33I know, this module is C++ safe. 34%} 35#else 36%echo "embed.i : Using Python 1.5" 37#endif 38 39%wrapper %{ 40 41#include <Python.h> 42 43#ifdef __cplusplus 44extern "C" 45#endif 46void SWIG_init(); /* Forward reference */ 47 48#define _PyImport_Inittab swig_inittab 49 50/* Grab Python's inittab[] structure */ 51 52#ifdef __cplusplus 53extern "C" { 54#endif 55#include <config.c> 56 57#undef _PyImport_Inittab 58 59/* Now define our own version of it. 60 Hopefully someone does not have more than 1000 built-in modules */ 61 62struct _inittab SWIG_Import_Inittab[1000]; 63 64static int swig_num_modules = 0; 65 66/* Function for adding modules to Python */ 67 68static void swig_add_module(char *name, void (*initfunc)()) { 69 SWIG_Import_Inittab[swig_num_modules].name = name; 70 SWIG_Import_Inittab[swig_num_modules].initfunc = initfunc; 71 swig_num_modules++; 72 SWIG_Import_Inittab[swig_num_modules].name = (char *) 0; 73 SWIG_Import_Inittab[swig_num_modules].initfunc = 0; 74} 75 76/* Function to add all of Python's build in modules to our interpreter */ 77 78static void swig_add_builtin() { 79 int i = 0; 80 while (swig_inittab[i].name) { 81 swig_add_module(swig_inittab[i].name, swig_inittab[i].initfunc); 82 i++; 83 } 84#ifdef SWIGMODINIT 85 SWIGMODINIT 86#endif 87 /* Add SWIG builtin function */ 88 swig_add_module(SWIG_name, SWIG_init); 89} 90 91#ifdef __cplusplus 92} 93#endif 94 95#ifdef __cplusplus 96extern "C" { 97#endif 98 99extern int Py_Main(int, char **); 100 101#ifdef __cplusplus 102} 103#endif 104 105extern struct _inittab *PyImport_Inittab; 106 107int 108main(int argc, char **argv) { 109 swig_add_builtin(); 110 PyImport_Inittab = SWIG_Import_Inittab; 111 return Py_Main(argc,argv); 112} 113 114%} 115 116 117 118 119