cool, thanks :)
Committed revision 1026.
On 7/27/07, Campbell Barton <cbarton@xxxxxxxxxx> wrote:
Hi, I have been looking into parsing numbers with Blender3D's api and
thought Id take a look at how PyGame parses numbers.
Even though youd think PyInt_AsLong would only work with PyInt's it
actually converts any type that supports the PyNumber protocol into an
in. - so theres no advantage in using PyNumber_Int.
the code below is from base.c, a smaller replacement for IntFromObj is
below. This avoids creating and removing a PyObject every time.
_________________________________________________
/* internal C API utility functions */
static int
IntFromObj (PyObject* obj, int* val)
{
PyObject* intobj;
if (PyNumber_Check (obj))
{
if (!(intobj = PyNumber_Int (obj)))
{
PyErr_Clear ();
return 0;
}
*val = PyInt_AsLong (intobj);
Py_DECREF (intobj);
if (PyErr_Occurred ())
{
PyErr_Clear ();
return 0;
}
return 1;
}
return 0;
}
_____________________________________________-
/* internal C API utility functions */
static int
IntFromObj (PyObject* obj, int* val)
{
int tmp_val;
tmp_val = PyInt_AsLong (obj);
if (tmp_val == -1 && PyErr_Occurred ())
{
PyErr_Clear ();
return 0;
}
*val = tmp_val;
return 1;
}