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