classobject.h 1.64 KB
Newer Older
1
/* Former class object interface -- now only bound methods are here  */
Guido van Rossum's avatar
Guido van Rossum committed
2

3
/* Revealing some structures (not for general use) */
Guido van Rossum's avatar
Guido van Rossum committed
4

5
#ifndef Py_LIMITED_API
6 7 8 9 10 11
#ifndef Py_CLASSOBJECT_H
#define Py_CLASSOBJECT_H
#ifdef __cplusplus
extern "C" {
#endif

12
typedef struct {
13 14
    PyObject_HEAD
    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 18
} PyMethodObject;

19
PyAPI_DATA(PyTypeObject) PyMethod_Type;
Guido van Rossum's avatar
Guido van Rossum committed
20

21
#define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type)
Guido van Rossum's avatar
Guido van Rossum committed
22

23
PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *);
Guido van Rossum's avatar
Guido van Rossum committed
24

25 26
PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *);
PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *);
27

28 29 30 31 32
/* 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) \
33
        (((PyMethodObject *)meth) -> im_self)
34

Christian Heimes's avatar
Christian Heimes committed
35
PyAPI_FUNC(int) PyMethod_ClearFreeList(void);
36 37

typedef struct {
38 39
    PyObject_HEAD
    PyObject *func;
40 41 42 43 44 45 46 47 48 49 50 51 52 53
} PyInstanceMethodObject;

PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type;

#define PyInstanceMethod_Check(op) ((op)->ob_type == &PyInstanceMethod_Type)

PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *);
PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *);

/* Macros for direct access to these values. Type checks are *not*
   done, so use with care. */
#define PyInstanceMethod_GET_FUNCTION(meth) \
        (((PyInstanceMethodObject *)meth) -> func)

54 55 56 57
#ifdef __cplusplus
}
#endif
#endif /* !Py_CLASSOBJECT_H */
58
#endif /* Py_LIMITED_API */