X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/b115b0c0883c2af8170b0e733bb1c47b40f2647e..f984b31a0c2f39711261b91433aedb54628cb963:/pyke/pyke.h diff --git a/pyke/pyke.h b/pyke/pyke.h index 581e444..c453a9c 100644 --- a/pyke/pyke.h +++ b/pyke/pyke.h @@ -62,6 +62,18 @@ PRIVATE_SYMBOLS; +/*----- Python version compatibility hacks --------------------------------*/ + +/* The handy `Py_TYPE' and `Py_SIZE' macros turned up in 2.6. Define them if + * they're not already here. + */ +#ifndef Py_TYPE +# define Py_TYPE(obj) (((PyObject *)(obj))->ob_type) +#endif +#ifndef Py_SIZE +# define Py_SIZE(obj) (((PyVarObject *)(obj))->ob_size) +#endif + /*----- Utilities for returning values and exceptions ---------------------*/ /* Returning values. */ @@ -153,8 +165,7 @@ extern PyObject *getulong(unsigned long); /* any kind of unsigned integer */ /*----- Miscellaneous utilities -------------------------------------------*/ -#define FREEOBJ(obj) \ - (((PyObject *)(obj))->ob_type->tp_free((PyObject *)(obj))) +#define FREEOBJ(obj) (Py_TYPE(obj)->tp_free((PyObject *)(obj))) /* Actually free OBJ, e.g., in a deallocation function. */ extern PyObject *abstract_pynew(PyTypeObject *, PyObject *, PyObject *);