• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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