All pastes #936037 Raw Edit

Example of generators in C

public c v1 · immutable
·published 2008-03-10 02:14 UTC
rendered paste body
#include <glib-object.h>#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;}