diff options
author | Guido van Rossum <guido@python.org> | 1998-07-10 15:46:33 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-07-10 15:46:33 +0000 |
commit | 66589d3d7b7ab992418087c2c0bb4d868d559fc9 (patch) | |
tree | 1eec34de9f6467e68b83286e1aaaace033c4ecf5 /Include | |
parent | 9fef325b91307729e1e1fc92a1dfba0f8bc23b78 (diff) | |
download | cpython-66589d3d7b7ab992418087c2c0bb4d868d559fc9.tar.gz |
Move the definition of PyMethodObject to classobject.h, so it can define
macros for more efficient access to the fields.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/classobject.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Include/classobject.h b/Include/classobject.h index a93abb6855..e03f46828d 100644 --- a/Include/classobject.h +++ b/Include/classobject.h @@ -56,6 +56,13 @@ typedef struct { PyObject *in_dict; /* A dictionary */ } PyInstanceObject; +typedef struct { + PyObject_HEAD + PyObject *im_func; /* The callable object implementing the method */ + PyObject *im_self; /* The instance it is bound to, or NULL */ + PyObject *im_class; /* The class that defined the method */ +} PyMethodObject; + extern DL_IMPORT(PyTypeObject) PyClass_Type, PyInstance_Type, PyMethod_Type; #define PyClass_Check(op) ((op)->ob_type == &PyClass_Type) @@ -70,6 +77,15 @@ extern PyObject *PyMethod_Function Py_PROTO((PyObject *)); extern PyObject *PyMethod_Self Py_PROTO((PyObject *)); extern PyObject *PyMethod_Class Py_PROTO((PyObject *)); +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyMethod_GET_FUNCTION(meth) \ + (((PyMethodObject *)meth) -> im_func) +#define PyMethod_GET_SELF(meth) \ + (((PyMethodObject *)meth) -> im_self) +#define PyMethod_GET_CLASS(meth) \ + (((PyMethodObject *)meth) -> im_class) + extern int PyClass_IsSubclass Py_PROTO((PyObject *, PyObject *)); extern PyObject *PyInstance_DoBinOp |