New SWIG runtime files and api updates for the move to SWIG 1.3.22

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29063 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-09-09 18:48:25 +00:00
parent 414863fd52
commit 0190c47234
9 changed files with 436 additions and 137 deletions

View File

@@ -137,6 +137,7 @@ static wxPyCoreAPI API = {
(p_SWIG_Python_TypeCast_t)SWIG_Python_TypeCast,
(p_SWIG_Python_TypeDynamicCast_t)SWIG_Python_TypeDynamicCast,
(p_SWIG_Python_TypeName_t)SWIG_Python_TypeName,
(p_SWIG_Python_TypePrettyName_t)SWIG_Python_TypePrettyName,
(p_SWIG_Python_TypeQuery_t)SWIG_Python_TypeQuery,
(p_SWIG_Python_TypeClientData_t)SWIG_Python_TypeClientData,
(p_SWIG_Python_newvarlink_t)SWIG_Python_newvarlink,

View File

@@ -62,6 +62,7 @@ SWIGIMPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *);
SWIGIMPORT(void *) SWIG_TypeCast(swig_type_info *, void *);
SWIGIMPORT(swig_type_info *) SWIG_TypeDynamicCast(swig_type_info *, void **);
SWIGIMPORT(const char *) SWIG_TypeName(const swig_type_info *);
SWIGIMPORT(const char *) SWIG_TypePrettyName(const swig_type_info *);
SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
SWIGIMPORT(void) SWIG_TypeClientData(swig_type_info *, void *);
SWIGIMPORT(char *) SWIG_PackData(char *, void *, int);
@@ -71,3 +72,4 @@ SWIGIMPORT(char *) SWIG_UnpackData(char *, void *, int);
#ifdef __cplusplus
}
#endif

View File

@@ -28,6 +28,7 @@
#define SWIG_TypeCast SWIG_Python_TypeCast
#define SWIG_TypeDynamicCast SWIG_Python_TypeDynamicCast
#define SWIG_TypeName SWIG_Python_TypeName
#define SWIG_TypePrettyName SWIG_Python_TypePrettyName
#define SWIG_TypeQuery SWIG_Python_TypeQuery
#define SWIG_TypeClientData SWIG_Python_TypeClientData
#define SWIG_PackData SWIG_Python_PackData
@@ -104,6 +105,7 @@ SWIGIMPORT(swig_type_info *) SWIG_TypeCheck(char *c, swig_type_info *);
SWIGIMPORT(void *) SWIG_TypeCast(swig_type_info *, void *);
SWIGIMPORT(swig_type_info *) SWIG_TypeDynamicCast(swig_type_info *, void **);
SWIGIMPORT(const char *) SWIG_TypeName(const swig_type_info *);
SWIGIMPORT(const char *) SWIG_TypePrettyName(const swig_type_info *);
SWIGIMPORT(swig_type_info *) SWIG_TypeQuery(const char *);
SWIGIMPORT(void) SWIG_TypeClientData(swig_type_info *, void *);
SWIGIMPORT(char *) SWIG_PackData(char *, void *, int);
@@ -112,13 +114,14 @@ SWIGIMPORT(char *) SWIG_UnpackData(char *, void *, int);
#else
static swig_type_info *swig_type_list = 0;
static swig_type_info **swig_type_list_handle = &swig_type_list;
/* Register a type mapping with the type-checking */
SWIGRUNTIME(swig_type_info *)
SWIG_TypeRegister(swig_type_info *ti) {
swig_type_info *tc, *head, *ret, *next;
/* Check to see if this type has already been registered */
tc = swig_type_list;
tc = *swig_type_list_handle;
while (tc) {
if (strcmp(tc->name, ti->name) == 0) {
/* Already exists in the table. Just add additional types to the list */
@@ -133,8 +136,8 @@ SWIG_TypeRegister(swig_type_info *ti) {
next = 0;
/* Place in list */
ti->prev = swig_type_list;
swig_type_list = ti;
ti->prev = *swig_type_list_handle;
*swig_type_list_handle = ti;
/* Build linked lists */
l1:
@@ -203,6 +206,26 @@ SWIG_TypeName(const swig_type_info *ty) {
return ty->name;
}
/* Return the pretty name associated with this type,
that is an unmangled type name in a form presentable to the user.
*/
SWIGRUNTIME(const char *)
SWIG_TypePrettyName(const swig_type_info *type) {
/* The "str" field contains the equivalent pretty names of the
type, separated by vertical-bar characters. We choose
to print the last name, as it is often (?) the most
specific. */
if (type->str != NULL) {
const char *last_name = type->str;
const char *s;
for (s = type->str; *s; s++)
if (*s == '|') last_name = s+1;
return last_name;
}
else
return type->name;
}
/*
Compare two type names skipping the space characters, therefore
"char*" == "char *" and "Class<int>" == "Class<int >", etc.
@@ -243,7 +266,7 @@ SWIG_TypeEquiv(const char *nb, const char *tb) {
/* Search for a swig_type_info structure */
SWIGRUNTIME(swig_type_info *)
SWIG_TypeQuery(const char *name) {
swig_type_info *ty = swig_type_list;
swig_type_info *ty = *swig_type_list_handle;
while (ty) {
if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
@@ -261,7 +284,7 @@ SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
equiv = ti->next;
while (equiv) {
if (!equiv->converter) {
tc = swig_type_list;
tc = *swig_type_list_handle;
while (tc) {
if ((strcmp(tc->name, equiv->name) == 0))
SWIG_TypeClientData(tc,clientdata);
@@ -276,10 +299,10 @@ SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
SWIGRUNTIME(char *)
SWIG_PackData(char *c, void *ptr, int sz) {
static char hex[17] = "0123456789abcdef";
int i;
unsigned char *u = (unsigned char *) ptr;
const unsigned char *eu = u + sz;
register unsigned char uu;
for (i = 0; i < sz; i++,u++) {
for (; u != eu; ++u) {
uu = *u;
*(c++) = hex[(uu & 0xf0) >> 4];
*(c++) = hex[uu & 0xf];
@@ -293,8 +316,8 @@ SWIG_UnpackData(char *c, void *ptr, int sz) {
register unsigned char uu = 0;
register int d;
unsigned char *u = (unsigned char *) ptr;
int i;
for (i = 0; i < sz; i++, u++) {
const unsigned char *eu = u + sz;
for (; u != eu; ++u) {
d = *(c++);
if ((d >= '0') && (d <= '9'))
uu = ((d - '0') << 4);
@@ -317,7 +340,7 @@ SWIG_UnpackData(char *c, void *ptr, int sz) {
#endif
/***********************************************************************
* python.swg
* pyrun.swg
*
* This file contains the runtime support for Python modules
* and includes code for managing global variables and pointer
@@ -326,8 +349,6 @@ SWIG_UnpackData(char *c, void *ptr, int sz) {
* Author : David Beazley (beazley@cs.uchicago.edu)
************************************************************************/
#include "Python.h"
#ifdef __cplusplus
extern "C" {
#endif
@@ -481,6 +502,7 @@ statichere PyTypeObject varlinktype = {
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
#if PY_VERSION_HEX >= 0x02020000
0, /* tp_iter */
0, /* tp_iternext */
0, /* tp_methods */
@@ -501,6 +523,17 @@ statichere PyTypeObject varlinktype = {
0, /* tp_cache */
0, /* tp_subclasses */
0, /* tp_weaklist */
#endif
#if PY_VERSION_HEX >= 0x02030200
0, /* tp_del */
#endif
#ifdef COUNT_ALLOCS
/* these must be last */
0, /* tp_alloc */
0, /* tp_free */
0, /* tp_maxalloc */
0, /* tp_next */
#endif
};
/* Create a variable linking object for use later */
@@ -574,7 +607,7 @@ SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags)
goto type_error;
}
}
c = PyString_AsString(obj);
c = PyString_AS_STRING(obj);
/* Pointer values must start with leading underscore */
if (*c != '_') {
*ptr = (void *) 0;
@@ -602,19 +635,17 @@ cobject:
}
if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
PyObject *zero = PyInt_FromLong(0);
PyObject_SetAttrString(pyobj,(char*)"thisown",zero);
Py_DECREF(zero);
PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
}
return 0;
type_error:
PyErr_Clear();
if (flags & SWIG_POINTER_EXCEPTION) {
if (ty && c) {
PyObject *err =
PyString_FromFormat("Type error. Got %s, expected %s",c,ty->name);
PyErr_SetObject(PyExc_TypeError, err);
Py_DECREF(err);
PyErr_Format(PyExc_TypeError,
"Type error. Got %s, expected %s",
c, ty->name);
} else {
PyErr_SetString(PyExc_TypeError,"Expected a pointer");
}
@@ -637,7 +668,7 @@ SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, int sz, swig_type_info *ty,
char *c = 0;
if ((!obj) || (!PyString_Check(obj))) goto type_error;
c = PyString_AsString(obj);
c = PyString_AS_STRING(obj);
/* Pointer values must start with leading underscore */
if (*c != '_') goto type_error;
c++;
@@ -652,10 +683,9 @@ type_error:
if (flags) {
if (ty && c) {
PyObject *err =
PyString_FromFormat("Type error. Got %s, expected %s",c,ty->name);
PyErr_SetObject(PyExc_TypeError, err);
Py_DECREF(err);
PyErr_Format(PyExc_TypeError,
"Type error. Got %s, expected %s",
c, ty->name);
} else {
PyErr_SetString(PyExc_TypeError,"Expected a pointer");
}
@@ -692,9 +722,7 @@ SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
Py_DECREF(args);
if (inst) {
if (own) {
PyObject *n = PyInt_FromLong(1);
PyObject_SetAttrString(inst,(char*)"thisown",n);
Py_DECREF(n);
PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
}
robj = inst;
}
@@ -769,61 +797,74 @@ static swig_type_info *swig_types[2];
/* -------- TYPES TABLE (END) -------- */
#define SWIG_init initswigrun
/*-----------------------------------------------
@(target):= _swigrun.so
------------------------------------------------*/
#define SWIG_init init_swigrun
#define SWIG_name "swigrun"
#define SWIG_name "_swigrun"
/* Auxiliar swig macros that appear in the header */
/* Auxiliar swig macros */
#define SWIG_OLDOBJ 1
#define SWIG_NEWOBJ SWIG_OLDOBJ + 1
#define SWIG_PYSTR SWIG_NEWOBJ + 1
#ifdef __cplusplus
#define SWIGSTATICINLINE(a) static inline a
#define SWIGSTATIC(a) static a
#define swig_new_array(type, size) (new type[(size)])
#define swig_new_array(size,Type) (new Type[(size)])
#define swig_delete(cptr) delete cptr
#define swig_delete_array(cptr) delete[] cptr
#define swig_const_cast(type,a) const_cast<type>(a)
#define swig_static_cast(type,a) static_cast<type>(a)
#define swig_reinterpret_cast(type,a) reinterpret_cast<type>(a)
#ifdef HAVE_NUMERIC_CAST
#define swig_numeric_cast(type,a) numeric_cast<type>(a)
#else
#define swig_numeric_cast(type,a) static_cast<type>(a)
#endif
#define swig_const_cast(a,Type) const_cast<Type >(a)
#define swig_static_cast(a,Type) static_cast<Type >(a)
#define swig_reinterpret_cast(a,Type) reinterpret_cast<Type >(a)
#define swig_new_copy(ptr,Type) (new Type(*ptr))
#define swig_numeric_cast(a,Type) static_cast<Type >(a)
#else /* C case */
#define SWIGSTATICINLINE(a) static a
#define SWIGSTATIC(a) static a
#define swig_new_array(type, size) ((type*) malloc((size)*sizeof(type)))
#define swig_new_array(size,Type) ((Type*) malloc((size)*sizeof(Type)))
#define swig_delete(cptr) free((char*)cptr)
#define swig_delete_array(cptr) free((char*)cptr)
#define swig_const_cast(type,a) (type)(a)
#define swig_static_cast(type,a) (type)(a)
#define swig_reinterpret_cast(type,a) (type)(a)
#define swig_numeric_cast(type,a) (type)(a)
#define swig_const_cast(a,Type) (Type)(a)
#define swig_static_cast(a,Type) (Type)(a)
#define swig_reinterpret_cast(a,Type) (Type)(a)
#define swig_numeric_cast(a,Type) (Type)(a)
#define swig_new_copy(ptr,Type) ((Type*)memcpy(malloc(sizeof(Type)),ptr,sizeof(Type)))
#endif /* __cplusplus */
#define SWIG_FromSignedChar PyInt_FromLong
#define SWIG_FromUnsignedChar PyInt_FromLong
#define SWIG_FromShort PyInt_FromLong
#define SWIG_FromUnsignedShort PyInt_FromLong
#define SWIG_FromInt PyInt_FromLong
#define SWIG_FromLong PyInt_FromLong
#define SWIG_FromFloat PyFloat_FromDouble
#define SWIG_FromDouble PyFloat_FromDouble
#define SWIG_FromFloat PyFloat_FromDouble
#define SWIG_FromDouble PyFloat_FromDouble
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_signed_SS_char PyInt_FromLong
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_unsigned_SS_char PyInt_FromLong
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_short PyInt_FromLong
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_unsigned_SS_short PyInt_FromLong
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_int PyInt_FromLong
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_long PyInt_FromLong
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_float PyFloat_FromDouble
/*@@*/
/*@/opt/swig/share/swig/1.3.22/python/pymacros.swg,63,SWIG_define@*/
#define SWIG_From_double PyFloat_FromDouble
/*@@*/
#ifdef __cplusplus
extern "C" {
#endif
static PyMethodDef SwigMethods[] = {
{ NULL, NULL }
{ NULL, NULL, 0, NULL }
};
@@ -840,7 +881,7 @@ _swigt__p_char,
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
static swig_const_info swig_const_table[] = {
{0}};
{0, 0, 0, 0.0, 0, 0}};
#ifdef __cplusplus
}

View File

@@ -0,0 +1,69 @@
// These fragments are inserted in modules that need to convert PyObjects to
// integer values, my versions allow any numeric type to be used, as long as
// it can be converted to a PyInt. (Specifically, I allow floats where the
// default SWIG_AsVal_long would just raise an exception.
//
// NOTE: This file has to be %included very early in the SWIGging process as
// it no longer allows existing fragments to be replaced with one of the same
// name. So to make this work I had to bring a copy of python.swg into this
// project and do the %include there before most other of the standard swiglib
// files are %included. This may change in 1.3.23, so adjust accordingly then.
%fragment(SWIG_AsVal_frag(long), "header") {
// See my_fragments.i
SWIGSTATICINLINE(int)
SWIG_AsVal(long)(PyObject* obj, long* val)
{
if (PyNumber_Check(obj)) {
if (val) *val = PyInt_AsLong(obj);
return 1;
}
else {
PyObject* errmsg = PyString_FromFormat("Expected number, got %s",
obj->ob_type->tp_name);
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
}
return 0;
}
}
%fragment(SWIG_AsVal_frag(unsigned long), "header",
fragment=SWIG_AsVal_frag(long)) {
// See my_fragments.i
SWIGSTATICINLINE(int)
SWIG_AsVal(unsigned long)(PyObject* obj, unsigned long* val)
{
long v = 0;
if (SWIG_AsVal_long(obj, &v) && v < 0) {
PyErr_SetString(PyExc_TypeError, "negative value received for unsigned type");
return 0;
}
else if (val)
*val = (unsigned long)v;
return 1;
}
}
%fragment(SWIG_AsVal_frag(double), "header") {
// See my_fragments.i
SWIGSTATICINLINE(int)
SWIG_AsVal(double)(PyObject *obj, double* val)
{
if (PyNumber_Check(obj)) {
if (val) *val = PyFloat_AsDouble(obj);
return 1;
}
else {
PyObject* errmsg = PyString_FromFormat("Expected number, got %s",
obj->ob_type->tp_name);
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
}
return 0;
}
}

View File

@@ -283,62 +283,6 @@ MAKE_INT_ARRAY_TYPEMAPS(styles, styles_field)
}
// These fragments are iserted in modules that need to convert PyObjects to
// integer values, my versions allow any numeric type to be used, as long as
// it can be converted to a PyInt. (Specifically, I allow floats where the
// default SWIG_AsLong would raise an obsucre exception from within
// PyLong_AsLong.)
%fragment("SWIG_AsLong","header") %{
SWIGSTATICINLINE(long)
SWIG_AsLong(PyObject * obj)
{
if (PyNumber_Check(obj))
return PyInt_AsLong(obj);
else {
PyObject* errmsg = PyString_FromFormat("Expected number, got %s",
obj->ob_type->tp_name);
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return 0;
}
}
%}
%fragment("SWIG_AsUnsignedLong","header", fragment="SWIG_AsLong") %{
SWIGSTATICINLINE(unsigned long)
SWIG_AsUnsignedLong(PyObject * obj)
{
if (PyLong_Check(obj)) {
return PyLong_AsUnsignedLong(obj);
} else {
long i = SWIG_AsLong(obj);
if ( !PyErr_Occurred() && (i < 0)) {
PyErr_SetString(PyExc_TypeError, "negative value received for unsigned type");
}
return i;
}
}
%}
%fragment("SWIG_AsDouble","header") %{
SWIGSTATICINLINE(double)
SWIG_AsDouble(PyObject *obj)
{
if (PyNumber_Check(obj))
return PyFloat_AsDouble(obj);
else {
PyObject* errmsg = PyString_FromFormat("Expected number, got %s",
obj->ob_type->tp_name);
PyErr_SetObject(PyExc_TypeError, errmsg);
Py_DECREF(errmsg);
return 0;
}
}
%}
//---------------------------------------------------------------------------
// Typemap for when GDI objects are returned by reference. This will cause a
// copy to be made instead of returning a reference to the same instance. The

View File

@@ -8,8 +8,6 @@
*
************************************************************************/
#include "Python.h"
#ifdef __cplusplus
extern "C" {
#endif
@@ -77,3 +75,4 @@ SWIGIMPORT(void) SWIG_Python_InstallConstants(PyObject *d, swig_con
#ifdef __cplusplus
}
#endif

90
wxPython/src/python.swg Normal file
View File

@@ -0,0 +1,90 @@
/* -----------------------------------------------------------------------------
* python.swg
*
* Python configuration module.
* ----------------------------------------------------------------------------- */
/* Python.h has to appear first */
%insert(runtime) %{
#include "Python.h"
%}
%insert(runtime) "precommon.swg";
%insert(runtime) "common.swg"; /* Common type-checking code */
%insert(runtime) "pyrun.swg"; /* Python run-time code */
/* Special directive for shadow code */
#define %shadow %insert("shadow")
#define %pythoncode %insert("python")
%include "pymacros.swg"
/* -----------------------------------------------------------------------------
* SWIGTYPE typemaps
* ----------------------------------------------------------------------------- */
%include "pyswigtype.swg"
/* -----------------------------------------------------------------------------
* Check for local fragment defintions
* ----------------------------------------------------------------------------- */
%include "my_fragments.i"
/* -----------------------------------------------------------------------------
* Typemap specializations
* ----------------------------------------------------------------------------- */
%include "pyinout.swg"
%include "pyvoid.swg"
%include "pyobject.swg"
%include "pystrbase.swg"
%include "pystrings.swg"
%include "pyvaltypes.swg"
%include "pyptrtypes.swg"
%include "pyprimtypes.swg"
%include "pymisctypes.swg"
%include "pyenum.swg"
/* ------------------------------------------------------------
* Overloaded operator support
* ------------------------------------------------------------ */
%include "pyopers.swg"
/* ------------------------------------------------------------
* Warnings for Python keywords
* ------------------------------------------------------------ */
%include "pythonkw.swg"
/* ------------------------------------------------------------
* The start of the Python initialization function
* ------------------------------------------------------------ */
%init %{
#ifdef __cplusplus
extern "C"
#endif
SWIGEXPORT(void) SWIG_init(void) {
static PyObject *SWIG_globals = 0;
static int typeinit = 0;
PyObject *m, *d;
int i;
if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
m = Py_InitModule((char *) SWIG_name, SwigMethods);
d = PyModule_GetDict(m);
if (!typeinit) {
for (i = 0; swig_types_initial[i]; i++) {
swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
}
typeinit = 1;
}
SWIG_InstallConstants(d,swig_const_table);
%}