From: Guido van Rossum Date: Fri, 10 Jul 1998 15:21:55 +0000 (+0000) Subject: Marc-Andre Lemburg's patch to move the typedef for PyCFunctionObject X-Git-Tag: v1.5.2a1~317 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9223351617793f0674b8410d39ff5437b2a29879;p=python Marc-Andre Lemburg's patch to move the typedef for PyCFunctionObject to the .h file and add macros there for inlined access to the fields. --- diff --git a/Include/methodobject.h b/Include/methodobject.h index 2d557c51a5..2b4819f184 100644 --- a/Include/methodobject.h +++ b/Include/methodobject.h @@ -49,6 +49,15 @@ extern PyCFunction PyCFunction_GetFunction Py_PROTO((PyObject *)); extern PyObject *PyCFunction_GetSelf Py_PROTO((PyObject *)); extern int PyCFunction_GetFlags Py_PROTO((PyObject *)); +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyCFunction_GET_FUNCTION(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_meth) +#define PyCFunction_GET_SELF(func) \ + (((PyCFunctionObject *)func) -> m_self) +#define PyCFunction_GET_FLAGS(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_flags) + struct PyMethodDef { char *ml_name; PyCFunction ml_meth; @@ -75,6 +84,12 @@ typedef struct PyMethodChain { extern PyObject *Py_FindMethodInChain Py_PROTO((PyMethodChain *, PyObject *, char *)); +typedef struct { + PyObject_HEAD + PyMethodDef *m_ml; + PyObject *m_self; +} PyCFunctionObject; + #ifdef __cplusplus } #endif diff --git a/Objects/methodobject.c b/Objects/methodobject.c index 529e2a1870..672981fb78 100644 --- a/Objects/methodobject.c +++ b/Objects/methodobject.c @@ -35,12 +35,6 @@ PERFORMANCE OF THIS SOFTWARE. #include "token.h" -typedef struct { - PyObject_HEAD - PyMethodDef *m_ml; - PyObject *m_self; -} PyCFunctionObject; - static PyCFunctionObject *free_list = NULL; PyObject *