[Numpy-discussion] SWIG, numpy.i and errno: comments?
Egor Zindy
ezindy at gmail.com
Sun Aug 9 06:17:38 EDT 2009
Hello list,
this is my attempt at generating python exceptions in SWIG/C using the
errno mechanism:
http://www.scipy.org/Cookbook/SWIG_NumPy_examples#head-10f49a0f5ea6b313127d2ec5ffa1eaf1c133cb22
Used together with numpy.i, this has been useful for notifying (in a
pythonic way) memory allocation errors or array index problems.
A change in the errno global variable is detected in the %exception
part of the SWIG interface file, and Python exceptions are generated
after $action depending on the errno error code value.
%exception
{
errno = 0;
$action
if (errno != 0)
{
switch(errno)
{
case EPERM:
PyErr_Format(PyExc_IndexError, "Index out of range");
break;
case ENOMEM:
PyErr_Format(PyExc_MemoryError, "Failed malloc()");
break;
default:
PyErr_Format(PyExc_Exception, "Unknown exception");
}
return NULL;
}
}
If there's a better way of doing this, I'll update the cookbook recipe.
Regards,
Egor
More information about the NumPy-Discussion
mailing list