mirror of https://github.com/python/cpython.git
Move the definition of PyMethodObject to classobject.h, so it can define
macros for more efficient access to the fields.
This commit is contained in:
parent
9223351617
commit
d4ba73c75b
|
@ -56,6 +56,13 @@ typedef struct {
|
||||||
PyObject *in_dict; /* A dictionary */
|
PyObject *in_dict; /* A dictionary */
|
||||||
} PyInstanceObject;
|
} 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;
|
extern DL_IMPORT(PyTypeObject) PyClass_Type, PyInstance_Type, PyMethod_Type;
|
||||||
|
|
||||||
#define PyClass_Check(op) ((op)->ob_type == &PyClass_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_Self Py_PROTO((PyObject *));
|
||||||
extern PyObject *PyMethod_Class 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 int PyClass_IsSubclass Py_PROTO((PyObject *, PyObject *));
|
||||||
|
|
||||||
extern PyObject *PyInstance_DoBinOp
|
extern PyObject *PyInstance_DoBinOp
|
||||||
|
|
|
@ -1411,14 +1411,6 @@ PyTypeObject PyInstance_Type = {
|
||||||
In case (b), im_self is NULL
|
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;
|
static PyMethodObject *free_list;
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
|
|
Loading…
Reference in New Issue