pyfragments.swg
来自「一个人工神经网络的程序。 文档等说明参见http://aureservoir.」· SWG 代码 · 共 284 行
SWG
284 行
/*-*- C -*-*//**********************************************************************//* For numpy versions prior to 1.0, the names of certain data types * are different than in later versions. This fragment provides macro * substitutions that allow us to support old and new versions of * numpy. */%fragment("NumPy_Backward_Compatibility", "header"){/* Support older NumPy data type names */%#if NDARRAY_VERSION < 0x01000000%#define NPY_BOOL PyArray_BOOL%#define NPY_BYTE PyArray_BYTE%#define NPY_UBYTE PyArray_UBYTE%#define NPY_SHORT PyArray_SHORT%#define NPY_USHORT PyArray_USHORT%#define NPY_INT PyArray_INT%#define NPY_UINT PyArray_UINT%#define NPY_LONG PyArray_LONG%#define NPY_ULONG PyArray_ULONG%#define NPY_LONGLONG PyArray_LONGLONG%#define NPY_ULONGLONG PyArray_ULONGLONG%#define NPY_FLOAT PyArray_FLOAT%#define NPY_DOUBLE PyArray_DOUBLE%#define NPY_LONGDOUBLE PyArray_LONGDOUBLE%#define NPY_CFLOAT PyArray_CFLOAT%#define NPY_CDOUBLE PyArray_CDOUBLE%#define NPY_CLONGDOUBLE PyArray_CLONGDOUBLE%#define NPY_OBJECT PyArray_OBJECT%#define NPY_STRING PyArray_STRING%#define NPY_UNICODE PyArray_UNICODE%#define NPY_VOID PyArray_VOID%#define NPY_NTYPES PyArray_NTYPES%#define NPY_NOTYPE PyArray_NOTYPE%#define NPY_CHAR PyArray_CHAR%#define NPY_USERDEF PyArray_USERDEF%#define npy_intp intp%#define NPY_MAX_BYTE MAX_BYTE%#define NPY_MIN_BYTE MIN_BYTE%#define NPY_MAX_UBYTE MAX_UBYTE%#define NPY_MAX_SHORT MAX_SHORT%#define NPY_MIN_SHORT MIN_SHORT%#define NPY_MAX_USHORT MAX_USHORT%#define NPY_MAX_INT MAX_INT%#define NPY_MIN_INT MIN_INT%#define NPY_MAX_UINT MAX_UINT%#define NPY_MAX_LONG MAX_LONG%#define NPY_MIN_LONG MIN_LONG%#define NPY_MAX_ULONG MAX_ULONG%#define NPY_MAX_LONGLONG MAX_LONGLONG%#define NPY_MIN_LONGLONG MIN_LONGLONG%#define NPY_MAX_ULONGLONG MAX_ULONGLONG%#define NPY_MAX_INTP MAX_INTP%#define NPY_MIN_INTP MIN_INTP%#define NPY_FARRAY FARRAY%#define NPY_F_CONTIGUOUS F_CONTIGUOUS%#endif}/**********************************************************************//* Override the SWIG_AsVal_frag(long) fragment so that it also checks * for numpy scalar array types. The code through the %#endif is * essentially cut-and-paste from pyprimtype.swg */%fragment(SWIG_AsVal_frag(long), "header", fragment="SWIG_CanCastAsInteger", fragment="NumPy_Backward_Compatibility"){ SWIGINTERN int SWIG_AsVal_dec(long)(PyObject * obj, long * val) { if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } }%#ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; long v = PyInt_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { double d; int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { if (val) *val = (long)(d); return res; } } }%#endif if (!PyArray_CheckScalar(obj)) return SWIG_TypeError; int dataType = PyArray_TYPE(obj); switch (dataType) { case NPY_BYTE: { char data = *((char*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, long); break; } case NPY_UBYTE: { unsigned char data = *((unsigned char*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, long); break; } case NPY_SHORT: { short data = *((short*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, long); break; } case NPY_USHORT: { unsigned short data = *((unsigned short*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, long); break; } case NPY_INT: { int data = *((int*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, long); break; } case NPY_UINT: { unsigned int data = *((unsigned int*)PyArray_DATA(obj)); if (data > NPY_MAX_LONG) return SWIG_OverflowError; if (val) *val = %numeric_cast(data, long); break; } case NPY_LONG: { *val = *((long*)PyArray_DATA(obj)); break; } case NPY_ULONG: { unsigned long data = *((unsigned long*)PyArray_DATA(obj)); if (data > NPY_MAX_LONG) return SWIG_OverflowError; if (val) *val = %numeric_cast(data, long); break; } default: return SWIG_TypeError; } return SWIG_OK; }}/* Override the SWIG_AsVal_frag(unsigned long) fragment so that it * also checks for numpy scalar array types. The code through the * %#endif is essentially cut-and-paste from pyprimtype.swg */%fragment(SWIG_AsVal_frag(unsigned long),"header", fragment="SWIG_CanCastAsInteger", fragment="NumPy_Backward_Compatibility"){ SWIGINTERN int SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val) { if (PyInt_Check(obj)) { long v = PyInt_AsLong(obj); if (v >= 0) { if (val) *val = v; return SWIG_OK; } else { return SWIG_OverflowError; } } else if (PyLong_Check(obj)) { unsigned long v = PyLong_AsUnsignedLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } }%#ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; unsigned long v = PyLong_AsUnsignedLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { double d; int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { if (val) *val = (unsigned long)(d); return res; } } }%#endif if (!PyArray_CheckScalar(obj)) return SWIG_TypeError; int dataType = PyArray_TYPE(obj); switch (dataType) { case NPY_BYTE: { char data = *((char*)PyArray_DATA(obj)); if (data < 0) return SWIG_OverflowError; if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_UBYTE: { unsigned char data = *((unsigned char*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_SHORT: { short data = *((short*)PyArray_DATA(obj)); if (data < 0) return SWIG_OverflowError; if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_USHORT: { unsigned short data = *((unsigned short*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_INT: { int data = *((int*)PyArray_DATA(obj)); if (data < 0) return SWIG_OverflowError; if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_UINT: { unsigned int data = *((unsigned int*)PyArray_DATA(obj)); if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_LONG: { long data = *((long*)PyArray_DATA(obj)); if (data < 0) return SWIG_OverflowError; if (val) *val = %numeric_cast(data, unsigned long); break; } case NPY_ULONG: { *val = *((unsigned long*)PyArray_DATA(obj)); break; } default: return SWIG_TypeError; } return SWIG_OK; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?