Kaydet (Commit) d4ba73c7 authored tarafından Guido van Rossum's avatar Guido van Rossum

Move the definition of PyMethodObject to classobject.h, so it can define

macros for more efficient access to the fields.
üst 92233516
......@@ -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
......
......@@ -1411,14 +1411,6 @@ PyTypeObject PyInstance_Type = {
In case (b), im_self is NULL
*/
typedef struct {
PyObject_HEAD
PyObject *im_func; /* The function implementing the method */
PyObject *im_self; /* The instance it is bound to, or NULL */
PyObject *im_class; /* The class that defined the method */
} PyMethodObject;
static PyMethodObject *free_list;
PyObject *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment