1
2/* Generator object interface */
3
4#ifndef Py_GENOBJECT_H
5#define Py_GENOBJECT_H
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10struct _frame; /* Avoid including frameobject.h */
11
12typedef struct {
13	PyObject_HEAD
14	/* The gi_ prefix is intended to remind of generator-iterator. */
15
16	/* Note: gi_frame can be NULL if the generator is "finished" */
17	struct _frame *gi_frame;
18
19	/* True if generator is being executed. */
20	int gi_running;
21
22	/* The code object backing the generator */
23	PyObject *gi_code;
24
25	/* List of weak reference. */
26	PyObject *gi_weakreflist;
27} PyGenObject;
28
29PyAPI_DATA(PyTypeObject) PyGen_Type;
30
31#define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type)
32#define PyGen_CheckExact(op) (Py_TYPE(op) == &PyGen_Type)
33
34PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *);
35PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *);
36
37#ifdef __cplusplus
38}
39#endif
40#endif /* !Py_GENOBJECT_H */
41