(root)/
Python-3.11.7/
Include/
cpython/
classobject.h
       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      vectorcallfunc vectorcall;
      18  } PyMethodObject;
      19  
      20  PyAPI_DATA(PyTypeObject) PyMethod_Type;
      21  
      22  #define PyMethod_Check(op) Py_IS_TYPE(op, &PyMethod_Type)
      23  
      24  PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *);
      25  
      26  PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *);
      27  PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *);
      28  
      29  /* Macros for direct access to these values. Type checks are *not*
      30     done, so use with care. */
      31  #define PyMethod_GET_FUNCTION(meth) \
      32          (((PyMethodObject *)meth) -> im_func)
      33  #define PyMethod_GET_SELF(meth) \
      34          (((PyMethodObject *)meth) -> im_self)
      35  
      36  typedef struct {
      37      PyObject_HEAD
      38      PyObject *func;
      39  } PyInstanceMethodObject;
      40  
      41  PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type;
      42  
      43  #define PyInstanceMethod_Check(op) Py_IS_TYPE(op, &PyInstanceMethod_Type)
      44  
      45  PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *);
      46  PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *);
      47  
      48  /* Macros for direct access to these values. Type checks are *not*
      49     done, so use with care. */
      50  #define PyInstanceMethod_GET_FUNCTION(meth) \
      51          (((PyInstanceMethodObject *)meth) -> func)
      52  
      53  #ifdef __cplusplus
      54  }
      55  #endif
      56  #endif   // !Py_CLASSOBJECT_H
      57  #endif   // !Py_LIMITED_API