chiark / gitweb /
catacomb-python.h: Don't inhibit 64-bit type detection any more.
[catacomb-python] / util.c
diff --git a/util.c b/util.c
index 717c3d97258413f99a04e7f81e9bfbd03d6e958a..f63bda051d4471ec2587aabd7e1c5350d1227f0f 100644 (file)
--- a/util.c
+++ b/util.c
 
 #include "catacomb-python.h"
 
+/*----- External values ---------------------------------------------------*/
+
+static PyObject *modname = 0;
+
 /*----- Conversions -------------------------------------------------------*/
 
 PyObject *getulong(unsigned long w)
@@ -168,14 +172,17 @@ void *newtype(PyTypeObject *metaty,
   return (ty);
 }
 
+void typeready(PyTypeObject *ty)
+{
+  PyType_Ready(ty);
+  PyDict_SetItemString(ty->tp_dict, "__module__", modname);
+}
+
 PyTypeObject *inittype(PyTypeObject *tyskel)
 {
-  static PyObject *modname = 0;
   PyTypeObject *ty = newtype(&PyType_Type, tyskel, 0);
-  if (!modname) modname = PyString_FromString("catacomb");
   ty->tp_flags |= Py_TPFLAGS_HEAPTYPE;
-  PyType_Ready(ty);
-  PyDict_SetItemString(ty->tp_dict, "__module__", modname);
+  typeready(ty);
   return (ty);
 }
 
@@ -219,8 +226,8 @@ PyMethodDef *donemethods(void)
 
 /*----- Exceptions --------------------------------------------------------*/
 
-PyObject * mkexc(PyObject *mod, PyObject *base,
-                const char *name, PyMethodDef *mm)
+PyObject *mkexc(PyObject *mod, PyObject *base,
+               const char *name, PyMethodDef *mm)
 {
   PyObject *nameobj = 0;
   PyObject *dict = 0;
@@ -406,7 +413,7 @@ PySequenceMethods gmap_pysequence = {
   0                                    /* @sq_inplace_repeat@ */
 };
 
-int gmap_pysize(PyObject *me)
+Py_ssize_t gmap_pysize(PyObject *me)
 {
   PyObject *i = 0, *x = 0;
   int rc = -1;
@@ -637,6 +644,7 @@ PyMethodDef gmap_pymethods[] = {
 
 void util_pyinit(void)
 {
+  modname = PyString_FromString("catacomb");
   INITTYPE(itemiter, root);
   INITTYPE(valiter, root);
 }