~ubuntu-branches/ubuntu/maverick/swig1.3/maverick

« back to all changes in this revision

Viewing changes to Lib/python/embed15.i

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Landschoff
  • Date: 2002-03-29 01:56:07 UTC
  • Revision ID: james.westby@ubuntu.com-20020329015607-c0wt03xu8oy9ioj7
Tags: upstream-1.3.11
ImportĀ upstreamĀ versionĀ 1.3.11

Show diffs side-by-side

added added

removed removed

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