LCOV - code coverage report
Current view: | top level - Include/cpython - classobject.h (source / functions) |  |  | Hit | Total | Coverage
Test: | CPython 3.12 LCOV report [commit 5e6661bce9] |  | Lines: | 4 | 6 | 66.7 %
Date: | 2023-03-20 08:15:36 |  | Functions: | 2 | 3 | 66.7 %
|  |  | Branches: | 0 | 0 | -

               Branch data     Line data    Source code
           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                 :            : #define _PyMethod_CAST(meth) \
          30                 :            :     (assert(PyMethod_Check(meth)), _Py_CAST(PyMethodObject*, meth))
          31                 :            :
          32                 :            : /* Static inline functions for direct access to these values.
          33                 :            :    Type checks are *not* done, so use with care. */
          34                 :     277876 : static inline PyObject* PyMethod_GET_FUNCTION(PyObject *meth) {
          35                 :     277876 :     return _PyMethod_CAST(meth)->im_func;
          36                 :            : }
          37                 :            : #define PyMethod_GET_FUNCTION(meth) PyMethod_GET_FUNCTION(_PyObject_CAST(meth))
          38                 :            :
          39                 :     277876 : static inline PyObject* PyMethod_GET_SELF(PyObject *meth) {
          40                 :     277876 :     return _PyMethod_CAST(meth)->im_self;
          41                 :            : }
          42                 :            : #define PyMethod_GET_SELF(meth) PyMethod_GET_SELF(_PyObject_CAST(meth))
          43                 :            :
          44                 :            : typedef struct {
          45                 :            :     PyObject_HEAD
          46                 :            :     PyObject *func;
          47                 :            : } PyInstanceMethodObject;
          48                 :            :
          49                 :            : PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type;
          50                 :            :
          51                 :            : #define PyInstanceMethod_Check(op) Py_IS_TYPE((op), &PyInstanceMethod_Type)
          52                 :            :
          53                 :            : PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *);
          54                 :            : PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *);
          55                 :            :
          56                 :            : #define _PyInstanceMethod_CAST(meth) \
          57                 :            :     (assert(PyInstanceMethod_Check(meth)), \
          58                 :            :      _Py_CAST(PyInstanceMethodObject*, meth))
          59                 :            :
          60                 :            : /* Static inline function for direct access to these values.
          61                 :            :    Type checks are *not* done, so use with care. */
          62                 :          0 : static inline PyObject* PyInstanceMethod_GET_FUNCTION(PyObject *meth) {
          63                 :          0 :     return _PyInstanceMethod_CAST(meth)->func;
          64                 :            : }
          65                 :            : #define PyInstanceMethod_GET_FUNCTION(meth) PyInstanceMethod_GET_FUNCTION(_PyObject_CAST(meth))
          66                 :            :
          67                 :            : #ifdef __cplusplus
          68                 :            : }
          69                 :            : #endif
          70                 :            : #endif   // !Py_CLASSOBJECT_H
          71                 :            : #endif   // !Py_LIMITED_API

Generated by: LCOV version 1.14