104 lines
2.6 KiB
Text
104 lines
2.6 KiB
Text
/* -----------------------------------------------------------------------------
|
|
* error manipulation
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
SWIGRUNTIME PyObject*
|
|
SWIG_Python_ErrorType(int code) {
|
|
PyObject* type = 0;
|
|
switch(code) {
|
|
case SWIG_MemoryError:
|
|
type = PyExc_MemoryError;
|
|
break;
|
|
case SWIG_IOError:
|
|
type = PyExc_IOError;
|
|
break;
|
|
case SWIG_RuntimeError:
|
|
type = PyExc_RuntimeError;
|
|
break;
|
|
case SWIG_IndexError:
|
|
type = PyExc_IndexError;
|
|
break;
|
|
case SWIG_TypeError:
|
|
type = PyExc_TypeError;
|
|
break;
|
|
case SWIG_DivisionByZero:
|
|
type = PyExc_ZeroDivisionError;
|
|
break;
|
|
case SWIG_OverflowError:
|
|
type = PyExc_OverflowError;
|
|
break;
|
|
case SWIG_SyntaxError:
|
|
type = PyExc_SyntaxError;
|
|
break;
|
|
case SWIG_ValueError:
|
|
type = PyExc_ValueError;
|
|
break;
|
|
case SWIG_SystemError:
|
|
type = PyExc_SystemError;
|
|
break;
|
|
case SWIG_AttributeError:
|
|
type = PyExc_AttributeError;
|
|
break;
|
|
default:
|
|
type = PyExc_RuntimeError;
|
|
}
|
|
return type;
|
|
}
|
|
|
|
|
|
SWIGRUNTIME void
|
|
SWIG_Python_AddErrorMsg(const char* mesg)
|
|
{
|
|
PyObject *type = 0;
|
|
PyObject *value = 0;
|
|
PyObject *traceback = 0;
|
|
|
|
if (PyErr_Occurred())
|
|
PyErr_Fetch(&type, &value, &traceback);
|
|
if (value) {
|
|
PyObject *old_str = PyObject_Str(value);
|
|
const char *tmp = SWIG_Python_str_AsChar(old_str);
|
|
PyErr_Clear();
|
|
Py_XINCREF(type);
|
|
if (tmp)
|
|
PyErr_Format(type, "%s %s", tmp, mesg);
|
|
else
|
|
PyErr_Format(type, "%s", mesg);
|
|
SWIG_Python_str_DelForPy3(tmp);
|
|
Py_DECREF(old_str);
|
|
Py_DECREF(value);
|
|
} else {
|
|
PyErr_SetString(PyExc_RuntimeError, mesg);
|
|
}
|
|
}
|
|
|
|
SWIGRUNTIME int
|
|
SWIG_Python_TypeErrorOccurred(PyObject *obj)
|
|
{
|
|
PyObject *error;
|
|
if (obj)
|
|
return 0;
|
|
error = PyErr_Occurred();
|
|
return error && PyErr_GivenExceptionMatches(error, PyExc_TypeError);
|
|
}
|
|
|
|
SWIGRUNTIME void
|
|
SWIG_Python_RaiseOrModifyTypeError(const char *message)
|
|
{
|
|
if (SWIG_Python_TypeErrorOccurred(NULL)) {
|
|
/* Use existing TypeError to preserve stacktrace and enhance with given message */
|
|
PyObject *newvalue;
|
|
PyObject *type = NULL, *value = NULL, *traceback = NULL;
|
|
PyErr_Fetch(&type, &value, &traceback);
|
|
#if PY_VERSION_HEX >= 0x03000000
|
|
newvalue = PyUnicode_FromFormat("%S\nAdditional information:\n%s", value, message);
|
|
#else
|
|
newvalue = PyString_FromFormat("%s\nAdditional information:\n%s", PyString_AsString(value), message);
|
|
#endif
|
|
Py_XDECREF(value);
|
|
PyErr_Restore(type, newvalue, traceback);
|
|
} else {
|
|
/* Raise TypeError using given message */
|
|
PyErr_SetString(PyExc_TypeError, message);
|
|
}
|
|
}
|