blob: 6ba1e0925e66859bfa06596dcb7505f7eda28c97 [file] [log] [blame]
Guido van Rossumf70e43a1991-02-19 12:39:46 +00001
Guido van Rossum85a5fbb1990-10-14 12:07:46 +00002/* Function object interface */
3
Fred Drakeea9cb5a2000-07-09 00:20:36 +00004#ifndef Py_FUNCOBJECT_H
5#define Py_FUNCOBJECT_H
6#ifdef __cplusplus
7extern "C" {
8#endif
9
Guido van Rossum25831651993-05-19 14:50:45 +000010typedef struct {
Fred Drakeea9cb5a2000-07-09 00:20:36 +000011 PyObject_HEAD
12 PyObject *func_code;
13 PyObject *func_globals;
14 PyObject *func_defaults;
15 PyObject *func_doc;
16 PyObject *func_name;
Guido van Rossumcaa63801995-01-12 11:45:45 +000017} PyFunctionObject;
Guido van Rossum25831651993-05-19 14:50:45 +000018
Guido van Rossum051ab121995-02-27 10:17:52 +000019extern DL_IMPORT(PyTypeObject) PyFunction_Type;
Guido van Rossum85a5fbb1990-10-14 12:07:46 +000020
Guido van Rossumcaa63801995-01-12 11:45:45 +000021#define PyFunction_Check(op) ((op)->ob_type == &PyFunction_Type)
Guido van Rossum85a5fbb1990-10-14 12:07:46 +000022
Fred Drakeea9cb5a2000-07-09 00:20:36 +000023extern DL_IMPORT(PyObject *) PyFunction_New(PyObject *, PyObject *);
24extern DL_IMPORT(PyObject *) PyFunction_GetCode(PyObject *);
25extern DL_IMPORT(PyObject *) PyFunction_GetGlobals(PyObject *);
26extern DL_IMPORT(PyObject *) PyFunction_GetDefaults(PyObject *);
27extern DL_IMPORT(int) PyFunction_SetDefaults(PyObject *, PyObject *);
Guido van Rossuma3309961993-07-28 09:05:47 +000028
Guido van Rossumba0d0611998-07-10 15:47:08 +000029/* Macros for direct access to these values. Type checks are *not*
30 done, so use with care. */
31#define PyFunction_GET_CODE(func) \
32 (((PyFunctionObject *)func) -> func_code)
33#define PyFunction_GET_GLOBALS(func) \
34 (((PyFunctionObject *)func) -> func_globals)
35#define PyFunction_GET_DEFAULTS(func) \
36 (((PyFunctionObject *)func) -> func_defaults)
37
Guido van Rossuma3309961993-07-28 09:05:47 +000038#ifdef __cplusplus
39}
40#endif
41#endif /* !Py_FUNCOBJECT_H */