#include <stdio.h>
#include "noidea.h"

#define cluster 128
#define size 640

int array[160];


int end;

void func_one(void)
{
	printf("one ");
}
void func_two(void)
{
	printf("two ");
}
void func_tre(void)
{
	printf("tree ");
}
void func_spc(void)
{
	printf("\n");
}
void func_end(void)
{
	end = 1;
}


int main (void)
{
	printf ("noidea\n");
//=====================================================================
//=======================base function=================================
//=====================================================================

/*
	NOIDEA_memory * memory = NOIDEA_seg ((void*)&array, 640);
	
	NOIDEA_node * node_sentinel = NOIDEA_schedule(0, func_end, 100 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_one = NOIDEA_schedule(node_sentinel, func_one, 10 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_two = NOIDEA_schedule(node_sentinel, func_two, 20 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_tre = NOIDEA_schedule(node_sentinel, func_tre, 30 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_spc = NOIDEA_schedule(node_sentinel, func_spc, 10 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));
	NOIDEA_node * node_end = NOIDEA_schedule(node_sentinel, func_end, 100 ,NOIDEA_alloc(memory,sizeof(NOIDEA_agenda)+sizeof(NOIDEA_node)));

	int time = 0;
	while (end == 0)
	{


		int idle = NOIDEA_do(node_sentinel,time);
		if (idle != 0)
		{
			time += idle;
		}
		else
		{
			time += 1;
		}

		printf("%d \n",time);
	}


	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel, node_one));
	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel, node_two));
	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel, node_tre));
	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel, node_spc));
	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel, node_end));
	NOIDEA_free(memory, NOIDEA_cancel(node_sentinel, node_sentinel));
*/
//======================================================
//==================test env============================
//======================================================
	noidea_nod * node;
	noidea_env * env = noidea_init(&array,640);

	//void * ptr0 = env->alloc(env,40);
	//void * ptr1 = env->alloc(env,60);
	//env->free(env,ptr0);

	//node = env->append(env,0);
	//printf("%d\n",env->next(env));
	//env->remove(env,node);
/*
	noidea_nod * node1 = env->start(env,&func_one,10);
	noidea_nod * node2 = env->start(env,&func_two,20);
	noidea_nod * node3 = env->start(env,&func_tre,30);
	noidea_nod * node_ = env->start(env,&func_spc,10);
	noidea_nod * nodeD = env->start(env,&func_end,100);
	int time = 0;
	while (end == 0)
	{
		int idle = env->loop(env,time);
		if (idle != 0)
		{
			time += idle;
		}
		else
		{
			time += 1;
		}
		printf("%d \n",time);
	}
	env->stop(env,node1);
	env->stop(env,node2);
	env->stop(env,node3);
	env->stop(env,node_);
	env->stop(env,nodeD);
*/
//======================================================
//==================test new data system================
//======================================================
	//noidea_nod * hamster = noidea_push(env,"d3200.491117#");
	//noidea_nod * souri = noidea_push(env,noidea_float2str(-5.4,2));
	//noidea_nod * chat = noidea_push(env,noidea_float2str(-4.4,16));
	//noidea_nod * chien = noidea_push(env,noidea_float2str(5.5,16));

	//printf("%f\n",noidea_node2float(hamster));
	//printf("%f\n",noidea_node2float(souri));
	//printf("%f\n",noidea_node2float(chat));
	//printf("%f\n",noidea_node2float(chien));
	
	//printf((char*)hamster->pack);printf("\n");
	//printf((char*)souri->pack);printf("\n");
	//printf((char*)chat->pack);printf("\n");
	//printf((char*)chien->pack);printf("\n");
	
	noidea_nod * un = noidea_push(env,"d0.1#");
	noidea_nod * deux = noidea_push(env,"d0.2#");
		
	printf(noidea_nodeadd(un,deux,10));printf("\n");
	printf(noidea_nodesub(un,deux,10));printf("\n");
	printf(noidea_nodemul(un,deux,10));printf("\n");
	printf(noidea_nodediv(un,deux,10));printf("\n");	

//======================================================

	int i;
	for (i=0;i<160;i+=1)
	{
		printf ("%9d ",array[i]);
	}
	printf ("\n");

	return 0;
}
