1 2 /* Generator object interface */ 3 4 #ifndef Py_GENOBJECT_H 5 #define Py_GENOBJECT_H 6 #ifdef __cplusplus 7 extern "C" { 8 #endif 9 10 struct _frame; /* Avoid including frameobject.h */ 11 12 typedef 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 29 PyAPI_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 34 PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); 35 PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *); 36 37 #ifdef __cplusplus 38 } 39 #endif 40 #endif /* !Py_GENOBJECT_H */ 41