int convulong(PyObject *o, void *pp)
{
- long i;
unsigned long *p = pp;
PyObject *t;
if (!o) VALERR("can't delete");
if (PyInt_Check(o)) {
- i = PyInt_AS_LONG(o);
+ long i = PyInt_AS_LONG(o);
if (i < 0) VALERR("must be nonnegative");
*p = i;
- } else {
+ } else
+ {
if ((t = PyNumber_Long(o)) == 0) goto end;
*p = PyLong_AsUnsignedLong(t);
Py_DECREF(t);
return (0);
}
+PyObject *enrich_compare(int op, int cmp)
+{
+ int r = -1;
+
+ switch (op) {
+ case Py_LT: r = cmp < 0; break;
+ case Py_LE: r = cmp <= 0; break;
+ case Py_EQ: r = cmp == 0; break;
+ case Py_NE: r = cmp != 0; break;
+ case Py_GE: r = cmp >= 0; break;
+ case Py_GT: r = cmp > 0; break;
+ default: assert(0);
+ }
+ return (getbool(r));
+}
+
/*----- Saving and restoring exceptions ----------------------------------*/
void report_lost_exception_v(struct excinfo *exc,