X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/catacomb-python/blobdiff_plain/9f9ea9ea4df181faa5fa7acadf3a022b25234f3e..bfb450ccb248489a622c7dcb51ed5e150eb8f3b6:/catacomb-python.h diff --git a/catacomb-python.h b/catacomb-python.h index 5c012ef..f1e6365 100644 --- a/catacomb-python.h +++ b/catacomb-python.h @@ -33,6 +33,8 @@ /*----- Header files ------------------------------------------------------*/ +#define PY_SSIZE_T_CLEAN + #include #include #include @@ -44,6 +46,7 @@ #include #include +#include #include #include @@ -62,6 +65,7 @@ #include #include #include +#include #include #include #include @@ -155,10 +159,11 @@ #define root_pytype 0 #define type_pytype &PyType_Type -#define INITTYPE(ty, base) do { \ +#define INITTYPE_META(ty, base, meta) do { \ ty##_pytype_skel.tp_base = base##_pytype; \ - ty##_pytype = inittype(&ty##_pytype_skel); \ + ty##_pytype = inittype(&ty##_pytype_skel, meta##_pytype); \ } while (0) +#define INITTYPE(ty, base) INITTYPE_META(ty, base, type) #define INSERT(name, ob) do { \ PyObject *_o = (PyObject *)(ob); \ @@ -246,7 +251,7 @@ extern void *newtype(PyTypeObject *, const PyTypeObject *, const char *); extern PyObject *mkexc(PyObject *, PyObject *, const char *, PyMethodDef *); extern void typeready(PyTypeObject *); -extern PyTypeObject *inittype(PyTypeObject *); +extern PyTypeObject *inittype(PyTypeObject *, PyTypeObject *); extern void addmethods(const PyMethodDef *); extern PyMethodDef *donemethods(void);