-#define GETU_(n) \
- PyObject *getu##n(uint##n w) \
- { \
- if (w <= MASK##n) \
- return (PyInt_FromLong(w)); \
- else \
- return (PyLong_FromUnsignedLong(w)); \
- }
-DOUINTSZ(GETU_)
+PyObject *getulong(unsigned long w)
+{
+ if (w <= LONG_MAX)
+ return (PyInt_FromLong(w));
+ else
+ return (PyLong_FromUnsignedLong(w));
+}
+
+static PyObject *i32 = 0;
+static int init_i32(void)
+ { if (!i32 && (i32 = PyInt_FromLong(32)) == 0) return (-1); return (0); }
+
+PyObject *getk64(kludge64 u)
+{
+ PyObject *i = 0, *j = 0, *t;
+ PyObject *rc = 0;
+
+ if (init_i32()) goto end;
+ if ((i = PyLong_FromUnsignedLong(HI64(u))) == 0) goto end;
+ if ((t = PyNumber_InPlaceLshift(i, i32)) == 0) goto end;
+ Py_DECREF(i); i = t;
+ if ((j = PyLong_FromUnsignedLong(LO64(u))) == 0) goto end;
+ if ((t = PyNumber_InPlaceOr(i, j)) == 0) goto end;
+ Py_DECREF(i); i = t;
+ if ((rc = PyNumber_Int(i)) == 0) goto end;
+end:
+ if (i) Py_DECREF(i);
+ if (j) Py_DECREF(j);
+ return (rc);
+}