diff options
author | Guido van Rossum <guido@python.org> | 1998-07-10 15:46:33 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-07-10 15:46:33 (GMT) |
commit | d4ba73c75bd4a0f049d8fb45859ddee1a2393b4f (patch) | |
tree | 4fac52ea6cb7b7b4f2eeb60c4021a71e0da996b4 /Include | |
parent | 9223351617793f0674b8410d39ff5437b2a29879 (diff) | |
download | cpython-d4ba73c75bd4a0f049d8fb45859ddee1a2393b4f.zip cpython-d4ba73c75bd4a0f049d8fb45859ddee1a2393b4f.tar.gz cpython-d4ba73c75bd4a0f049d8fb45859ddee1a2393b4f.tar.bz2 |
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 a93abb6..e03f468 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 |