Home | History | Annotate | Download | only in Include
      1 /* Former class object interface -- now only bound methods are here  */
      2 
      3 /* Revealing some structures (not for general use) */
      4 
      5 #ifndef Py_LIMITED_API
      6 #ifndef Py_CLASSOBJECT_H
      7 #define Py_CLASSOBJECT_H
      8 #ifdef __cplusplus
      9 extern "C" {
     10 #endif
     11 
     12 typedef struct {
     13     PyObject_HEAD
     14     PyObject *im_func;   /* The callable object implementing the method */
     15     PyObject *im_self;   /* The instance it is bound to */
     16     PyObject *im_weakreflist; /* List of weak references */
     17 } PyMethodObject;
     18 
     19 PyAPI_DATA(PyTypeObject) PyMethod_Type;
     20 
     21 #define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type)
     22 
     23 PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *);
     24 
     25 PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *);
     26 PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *);
     27 
     28 /* Macros for direct access to these values. Type checks are *not*
     29    done, so use with care. */
     30 #define PyMethod_GET_FUNCTION(meth) \
     31         (((PyMethodObject *)meth) -> im_func)
     32 #define PyMethod_GET_SELF(meth) \
     33 	(((PyMethodObject *)meth) -> im_self)
     34 
     35 PyAPI_FUNC(int) PyMethod_ClearFreeList(void);
     36 
     37 typedef struct {
     38 	PyObject_HEAD
     39 	PyObject *func;
     40 } PyInstanceMethodObject;
     41 
     42 PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type;
     43 
     44 #define PyInstanceMethod_Check(op) ((op)->ob_type == &PyInstanceMethod_Type)
     45 
     46 PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *);
     47 PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *);
     48 
     49 /* Macros for direct access to these values. Type checks are *not*
     50    done, so use with care. */
     51 #define PyInstanceMethod_GET_FUNCTION(meth) \
     52         (((PyInstanceMethodObject *)meth) -> func)
     53 
     54 #ifdef __cplusplus
     55 }
     56 #endif
     57 #endif /* !Py_CLASSOBJECT_H */
     58 #endif /* Py_LIMITED_API */
     59