#include <v_lib.h>
#include "rgcache.h"
#include "genparse.h"

vhandle_t in;

vp_stack_t floatgens = TYPED_STACK_EMPTY_INITIALIZER;

static void
clean_floatgens()
{
	float_generator_p g;
	while(vpsPop(&floatgens,(void_p*)&g))
		g->destroy(g);
	vpsClear(&floatgens);
} 

int main(int argc, char *argv[])
{
	CALLER_NAME(main);
	logStartConsoleLog();
	logUpperLevel(LOG_TRACE);
	in = lexParseFile("test.fcic","{}()[];");
	lexSetInteger(in,LEX_COMMENT_CHAR,'#');
	lexEnable(in,LEX_ONE_CHAR_COMMENTS);
	while(lexNext(in))
	{
		if(lexLastWas(in, "generators"))
		{
			parseGenerators(in, &floatgens);
		}
	}
    printf("parsed %u generators\n", vpsCount(&floatgens));
    if(vpsCount(&floatgens))
    {
    	int i;
    	vec_t f;
    	float_generator_p g;
    	g = (float_generator_p)vpsGet(&floatgens,0);
    	for(i=0;i<10;i++)
    	{
    		if(!g->next(g,&f))
    			break;
    		printf("%g\n",f);
    	}
    }
    clean_floatgens();
	lexDestroy(in);
	memPrintStats();
	return 0;
}
