This commit was manufactured by cvs2svn to create tag 'r22a4-fork'.
[python/dscho.git] / Include / funcobject.h
blob6b1e389b7ce762257c00da142a174170130fa78d
2 /* Function object interface */
4 #ifndef Py_FUNCOBJECT_H
5 #define Py_FUNCOBJECT_H
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 typedef struct {
11 PyObject_HEAD
12 PyObject *func_code;
13 PyObject *func_globals;
14 PyObject *func_defaults;
15 PyObject *func_closure;
16 PyObject *func_doc;
17 PyObject *func_name;
18 PyObject *func_dict;
19 PyObject *func_weakreflist;
20 } PyFunctionObject;
22 extern DL_IMPORT(PyTypeObject) PyFunction_Type;
24 #define PyFunction_Check(op) ((op)->ob_type == &PyFunction_Type)
26 extern DL_IMPORT(PyObject *) PyFunction_New(PyObject *, PyObject *);
27 extern DL_IMPORT(PyObject *) PyFunction_GetCode(PyObject *);
28 extern DL_IMPORT(PyObject *) PyFunction_GetGlobals(PyObject *);
29 extern DL_IMPORT(PyObject *) PyFunction_GetDefaults(PyObject *);
30 extern DL_IMPORT(int) PyFunction_SetDefaults(PyObject *, PyObject *);
31 extern DL_IMPORT(PyObject *) PyFunction_GetClosure(PyObject *);
32 extern DL_IMPORT(int) PyFunction_SetClosure(PyObject *, PyObject *);
34 /* Macros for direct access to these values. Type checks are *not*
35 done, so use with care. */
36 #define PyFunction_GET_CODE(func) \
37 (((PyFunctionObject *)func) -> func_code)
38 #define PyFunction_GET_GLOBALS(func) \
39 (((PyFunctionObject *)func) -> func_globals)
40 #define PyFunction_GET_DEFAULTS(func) \
41 (((PyFunctionObject *)func) -> func_defaults)
42 #define PyFunction_GET_CLOSURE(func) \
43 (((PyFunctionObject *)func) -> func_closure)
45 /* The classmethod and staticmethod types lives here, too */
46 extern DL_IMPORT(PyTypeObject) PyClassMethod_Type;
47 extern DL_IMPORT(PyTypeObject) PyStaticMethod_Type;
49 extern DL_IMPORT(PyObject *) PyClassMethod_New(PyObject *);
50 extern DL_IMPORT(PyObject *) PyStaticMethod_New(PyObject *);
52 #ifdef __cplusplus
54 #endif
55 #endif /* !Py_FUNCOBJECT_H */