- { 0 }
- };
- int i;
- PyObject *x;
-
- for (i = 0; consts[i].name; i++) {
- if (consts[i].value > LONG_MAX)
- x = PyLong_FromUnsignedLong(consts[i].value);
- else
- x = PyInt_FromLong(consts[i].value);
- PyModule_AddObject(mod, (/*unconst*/ char *)consts[i].name, x);
- }
-}
-
-PyObject *getu32(uint32 w)
-{
- if (w <= 0x7fffffff)
- return (PyInt_FromLong(w));
- else
- return (PyLong_FromUnsignedLong(w));
-}
-
-PyObject *getbool(int b)
-{
- if (b) RETURN_TRUE;
- else RETURN_FALSE;
-}
-
-PyObject *abstract_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
-{
- PyErr_SetString(PyExc_TypeError, "can't instantiate this class");
- return (0);
-}
-
-int convulong(PyObject *o, void *pp)
-{
- long i;
- unsigned long *p = pp;
- PyObject *t;
-
- if (PyInt_Check(o)) {
- i = PyInt_AS_LONG(o);
- if (i < 0) TYERR("must be nonnegative");
- *p = i;
- } else {
- if ((t = PyNumber_Long(o)) == 0) goto end;
- *p = PyLong_AsUnsignedLong(t);
- Py_DECREF(t);
- if (PyErr_Occurred()) goto end;
- }
- return (1);
-end:
- return (0);
-}
-
-int convu32(PyObject *o, void *pp)
-{
- unsigned long u;
- uint32 *p = pp;
-
- if (!convulong(o, &u)) goto end;
- if (u > 0xffffffff) TYERR("out of range");
- *p = u;
- return (1);
-end:
- return (0);
-}
-
-int convuint(PyObject *o, void *pp)
-{
- unsigned long u;
- unsigned *p = pp;
-
- if (!convulong(o, &u)) goto end;
- if (u > UINT_MAX) TYERR("out of range");
- *p = u;
- return (1);
-end:
- return (0);
-}
-
-int convmpw(PyObject *o, void *pp)
-{
- unsigned long u;
- unsigned *p = pp;
-
- if (!convulong(o, &u)) goto end;
- if (u > MPW_MAX) TYERR("out of range");
- *p = u;
- return (1);
-end:
- return (0);
-}
-
-int convszt(PyObject *o, void *pp)
-{
- unsigned long u;
- size_t *p = pp;
-
- if (!convulong(o, &u)) goto end;
- if (u > ~(size_t)0) TYERR("out of range");
- *p = u;
- return (1);
-end:
- return (0);
-}
-
-int convbool(PyObject *o, void *pp)
-{
- *(int *)pp = PyObject_IsTrue(o);
- return (1);
-}