1 /***********************************************************************
3 * swig_lib/python/python.cfg
5 * This file contains coded needed to add variable linking to the
6 * Python interpreter. C variables are added as a new kind of Python
9 * Also contains supporting code for building python under Windows
10 * and things like that.
13 * Revision 1.1 1999/08/04 05:25:58 RD
14 * New Makefile/Setup files supporting multiple dynamic extension modules
17 * Fixes for the wxGLCanvas demo to work around a strange bug in gtk.
19 * SWIG support routines now compiled separately instead of being bundled
22 ************************************************************************/
32 /* Definitions for Windows/Unix exporting */
33 #if defined(__WIN32__)
34 # if defined(_MSC_VER)
35 # define SWIGEXPORT(a,b) __declspec(dllexport) a b
37 # if defined(__BORLANDC__)
38 # define SWIGEXPORT(a,b) a _export b
40 # define SWIGEXPORT(a,b) a b
44 # define SWIGEXPORT(a,b) a b
49 #define SWIGSTATIC extern "C"
56 #define SWIGSTATIC static
61 PyObject
*(*get_attr
)(void);
62 int (*set_attr
)(PyObject
*);
65 typedef struct swig_varlinkobject
{
67 swig_globalvar
**vars
;
72 /* ----------------------------------------------------------------------
75 Function for python repr method
76 ---------------------------------------------------------------------- */
79 swig_varlink_repr(swig_varlinkobject
*v
)
82 return PyString_FromString("<Global variables>");
85 /* ---------------------------------------------------------------------
88 Print out all of the global variable names
89 --------------------------------------------------------------------- */
92 swig_varlink_print(swig_varlinkobject
*v
, FILE *fp
, int flags
)
97 fprintf(fp
,"Global variables { ");
99 fprintf(fp
,"%s", v
->vars
[i
]->name
);
101 if (v
->vars
[i
]) fprintf(fp
,", ");
107 /* --------------------------------------------------------------------
110 This function gets the value of a variable and returns it as a
111 PyObject. In our case, we'll be looking at the datatype and
112 converting into a number or string
113 -------------------------------------------------------------------- */
116 swig_varlink_getattr(swig_varlinkobject
*v
, char *n
)
122 if (strcmp(v
->vars
[i
]->name
,n
) == 0) {
123 return (*v
->vars
[i
]->get_attr
)();
127 sprintf(temp
,"C global variable %s not found.", n
);
128 PyErr_SetString(PyExc_NameError
,temp
);
132 /* -------------------------------------------------------------------
133 swig_varlink_setattr()
135 This function sets the value of a variable.
136 ------------------------------------------------------------------- */
139 swig_varlink_setattr(swig_varlinkobject
*v
, char *n
, PyObject
*p
)
144 if (strcmp(v
->vars
[i
]->name
,n
) == 0) {
145 return (*v
->vars
[i
]->set_attr
)(p
);
149 sprintf(temp
,"C global variable %s not found.", n
);
150 PyErr_SetString(PyExc_NameError
,temp
);
154 statichere PyTypeObject varlinktype
= {
155 /* PyObject_HEAD_INIT(&PyType_Type) Note : This doesn't work on some machines */
156 PyObject_HEAD_INIT(0)
158 "varlink", /* Type name */
159 sizeof(swig_varlinkobject
), /* Basic size */
162 (printfunc
) swig_varlink_print
, /* Print */
163 (getattrfunc
) swig_varlink_getattr
, /* get attr */
164 (setattrfunc
) swig_varlink_setattr
, /* Set attr */
166 (reprfunc
) swig_varlink_repr
, /* tp_repr */
167 0, /* tp_as_number */
168 0, /* tp_as_mapping*/
172 /* Create a variable linking object for use later */
174 SWIGSTATIC PyObject
*
175 SWIG_newvarlink(void)
177 swig_varlinkobject
*result
= 0;
178 result
= PyMem_NEW(swig_varlinkobject
,1);
179 varlinktype
.ob_type
= &PyType_Type
; /* Patch varlinktype into a PyType */
180 result
->ob_type
= &varlinktype
;
181 /* _Py_NewReference(result); Does not seem to be necessary */
183 result
->maxvars
= 64;
184 result
->vars
= (swig_globalvar
**) malloc(64*sizeof(swig_globalvar
*));
186 result
->ob_refcnt
= 0;
187 Py_XINCREF((PyObject
*) result
);
188 return ((PyObject
*) result
);
192 SWIG_addvarlink(PyObject
*p
, char *name
,
193 PyObject
*(*get_attr
)(void), int (*set_attr
)(PyObject
*p
))
195 swig_varlinkobject
*v
;
196 v
= (swig_varlinkobject
*) p
;
198 if (v
->nvars
>= v
->maxvars
-1) {
199 v
->maxvars
= 2*v
->maxvars
;
200 v
->vars
= (swig_globalvar
**) realloc(v
->vars
,v
->maxvars
*sizeof(swig_globalvar
*));
201 if (v
->vars
== NULL
) {
202 fprintf(stderr
,"SWIG : Fatal error in initializing Python module.\n");
206 v
->vars
[v
->nvars
] = (swig_globalvar
*) malloc(sizeof(swig_globalvar
));
207 v
->vars
[v
->nvars
]->name
= (char *) malloc(strlen(name
)+1);
208 strcpy(v
->vars
[v
->nvars
]->name
,name
);
209 v
->vars
[v
->nvars
]->get_attr
= get_attr
;
210 v
->vars
[v
->nvars
]->set_attr
= set_attr
;
212 v
->vars
[v
->nvars
] = 0;