X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/a539ffb8538158c1dc7eeb4ad5264a6e995496b6..aaf8c7aa5f90b6d58c0ee317e19976972eee39ba:/catacomb.c diff --git a/catacomb.c b/catacomb.c index a914bff..b3d7e52 100644 --- a/catacomb.c +++ b/catacomb.c @@ -128,7 +128,7 @@ static void *thingtab_gmlookup(PyObject *me, PyObject *key, unsigned *f) { const char *p; - p = PyString_AsString(key); if (!p) return (0); + p = TEXT_STR(key); if (!p) return (0); return (sym_find(THINGTAB_T(me), p, -1, 0, f)); } @@ -139,7 +139,7 @@ static void *thingtab_gmiternext(PyObject *me, void *i) { sym_iter *it = i; void *e; SYM_NEXT(it, e); return (e); } static PyObject *thingtab_gmentrykey(PyObject *me, void *e) - { return (PyString_FromString(SYM_NAME(e))); } + { return (TEXT_FROMSTR(SYM_NAME(e))); } static PyObject *thingtab_gmentryvalue(PyObject *me, void *e) { PyObject *rc = THING_VAL(e); RETURN_OBJ(rc); } @@ -231,7 +231,7 @@ PyObject *make_grouptab(const void *tab, size_t esz, } static const PyTypeObject thingtab_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ + PyVarObject_HEAD_INIT(0, 0) /* Header */ "_MiscTable", /* @tp_name@ */ sizeof(thingtab_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -321,19 +321,42 @@ static void init_random(void) #endif } -EXPORT void init_base(void) +#ifdef PY3 +static PyModuleDef moddef = { + PyModuleDef_HEAD_INIT, + "catacomb._base", /* @m_name@ */ + "Low-level module for Catacomb bindings. Use `catacomb' instead.", + /* @m_doc@ */ + 0, /* @m_size@ */ + 0, /* @m_methods@ */ + 0, /* @m_slots@ */ + 0, /* @m_traverse@ */ + 0, /* @m_clear@ */ + 0 /* @m_free@ */ +}; +#endif + +EXPORT PyMODINIT_FUNC PY23(init_base, PyInit__base)(void) { PyObject *mod; - modname = PyString_FromString("catacomb"); + modname = TEXT_FROMSTR("catacomb"); addmethods(methods); INIT_MODULES; INITTYPE(thingtab, root); init_random(); +#ifdef PY3 + moddef.m_methods = donemethods(); + mod = PyModule_Create(&moddef); +#else mod = Py_InitModule("catacomb._base", donemethods()); +#endif INSERT_MODULES; INSERT("_MiscTable", thingtab_pytype); INSERT("smallprimes", smallprimes()); +#ifdef PY3 + return (mod); +#endif } /*----- That's all, folks -------------------------------------------------*/