]> granicus.if.org Git - python/commitdiff
Move the definition of PyMethodObject to classobject.h, so it can define
authorGuido van Rossum <guido@python.org>
Fri, 10 Jul 1998 15:46:33 +0000 (15:46 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 10 Jul 1998 15:46:33 +0000 (15:46 +0000)
macros for more efficient access to the fields.

Include/classobject.h
Objects/classobject.c

index a93abb68552e50772121fac0c68584f3e2a5804d..e03f46828d1144619cde4c686a0a89a516e53552 100644 (file)
@@ -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
index 86fc1d399a7f4f72f65ab159b4aa8e0b7359b719..299ea64dede2c8aefb555d8434d6fde9f6c637c1 100644 (file)
@@ -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 *