chiark
/
gitweb
/
~mdw
/
pyke
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
catacomb-python.h, util.c: Support for declaring types with weird metatypes.
[pyke]
/
catacomb-python.h
diff --git
a/catacomb-python.h
b/catacomb-python.h
index 5c012ef321206b8572cadae9847fb6a120430ce1..ecdbc30d8758d2e323bcb320a57726445bbb519e 100644
(file)
--- a/
catacomb-python.h
+++ b/
catacomb-python.h
@@
-155,10
+155,11
@@
#define root_pytype 0
#define type_pytype &PyType_Type
#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_skel.tp_base = base##_pytype; \
- ty##_pytype = inittype(&ty##_pytype_skel
);
\
+ ty##_pytype = inittype(&ty##_pytype_skel
, meta##_pytype);
\
} while (0)
} while (0)
+#define INITTYPE(ty, base) INITTYPE_META(ty, base, type)
#define INSERT(name, ob) do { \
PyObject *_o = (PyObject *)(ob); \
#define INSERT(name, ob) do { \
PyObject *_o = (PyObject *)(ob); \
@@
-246,7
+247,7
@@
extern void *newtype(PyTypeObject *, const PyTypeObject *, const char *);
extern PyObject *mkexc(PyObject *, PyObject *, const char *, PyMethodDef *);
extern void typeready(PyTypeObject *);
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);
extern void addmethods(const PyMethodDef *);
extern PyMethodDef *donemethods(void);