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

#define cluster 128
#define size 640

int end;
void_memory * memory;
int array[160];

void print_list(void_node * node){
	void_node * tmp = node->next;
	while (tmp != node){
		int name = *((int*)tmp->pack);
		printf("%d ",name);
		tmp = tmp->next;
	}
	printf("\n");
}

void_node * node_sentinel;

void_node * create (void_node * src, void * pack){
	return void_create(src,pack,void_alloc(memory,sizeof(void_node)));
}

void destroy (void_node * nud){
	void_free(memory, void_destroy(nud));
}

int bigger_than(void * src, void * dest){
	//printf("%d < %d \n",*(int*)src,*(int*)dest);
	print_list(node_sentinel);
	if (*(int*)src > *(int*)dest){
		return 1;
	}
	return 0;
}

int root = 0;
int un = 1;
int deux = 2;
int trois = 3;
int quatre = 4;
int cinq = 5;

int main (void)
{
	printf ("new timer system ?\n");
//=====================================================================
	memory = void_seg ((void*)&array, 640);

	node_sentinel = create(0,&root);
	void_node * node_one = create(node_sentinel, &un);
	void_node * node_two = create(node_sentinel, &deux);
	void_node * node_tre = create(node_sentinel, &trois);
	void_node * node_spc = create(node_sentinel, &quatre);
	void_node * node_end = create(node_sentinel, &cinq);

	print_list(node_sentinel);
	void_sort(node_sentinel,&bigger_than);
	print_list(node_sentinel);

	destroy(node_one);
	destroy(node_two);
	destroy(node_tre);
	destroy(node_spc);
	//destroy(node_end);
	destroy(node_sentinel);

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