| 1 | #ifndef GENERATOR_H |
| 2 | #define GENERATOR_H |
| 3 | |
| 4 | #include <stdbool.h> |
| 5 | |
| 6 | typedef struct Generator Generator; |
| 7 | Generator *Generator_New(void *(*)(void *), void *); |
| 8 | void Generator_Delete(Generator *); |
| 9 | |
| 10 | // Returns true if generator yielded a value, false if generator is complete |
| 11 | // *value is set to generator's value (yield / return value from exit) |
| 12 | bool Generator_Next(Generator *, void **value); |
| 13 | |
| 14 | // Yield a value from the generator |
| 15 | // Returns true if generator should continue, false for generator to exit PDQ |
| 16 | bool Generator_Yield(void *); |
| 17 | |
| 18 | #endif |
| 19 | |