#include #include "generator.h" void power(Generator *gen, va_list args) { int number = va_arg(args, int); int exponent = va_arg(args, int); GValue value = {0}; g_value_init(&value, G_TYPE_INT); int result = 1; int counter = 0; while(counter++ < exponent) { result *= number; g_value_set_int(&value, result); generator_yield(gen, &value); } } int main() { g_type_init(); Generator *gen = generator_new(); GValue value = {0}; generator_va_start(gen, power, NULL, 2, 8); while(generator_next(gen, &value)) { gchar *repr = g_strdup_value_contents(&value); g_print("Value = %s\n", repr); g_free(repr); } generator_free(gen); return 0; }