typedef struct NOIDEA_node
{
	void * pack;
	struct NOIDEA_node * last;
	struct NOIDEA_node * next;
} NOIDEA_node;

NOIDEA_node * NOIDEA_create (NOIDEA_node * noidea_src, void * noidea_pack, void * noidea_ptr);
void * NOIDEA_destroy (NOIDEA_node * noidea_src, NOIDEA_node * noidea_nud);
void * NOIDEA_loop (NOIDEA_node * noidea_src);
void * NOIDEA_rev (NOIDEA_node * noidea_src);
//==========================

typedef struct NOIDEA_agenda
{
	int type;	//identify type of node
	NOIDEA_node * node;		//the node that list it
	signed long int wait;		//interval between call
	void (*func)(void);		//function to call
	signed long int till;		//wait till to execute
	signed long int idle;		//time left before execute
	signed long int loop;		//value that end loop
} NOIDEA_agenda;

NOIDEA_node * NOIDEA_schedule (NOIDEA_node * , void (*)(void), signed long int  ,void * );
NOIDEA_node * NOIDEA_reschedule (NOIDEA_node * , NOIDEA_node * , signed long int );
void * NOIDEA_cancel (NOIDEA_node * , NOIDEA_node * );
signed long int NOIDEA_do (NOIDEA_node * , signed long int );



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

