#ifndef HEADER_FIFO
#define HEADER_FIFO

typedef struct {
	char	*data;
	int		datanum;
	int		datasize;
} FIFO;

FIFO	*fifo_new(int data_size);
void	fifo_destroy(FIFO *fifo);
int		fifo_set(FIFO *fifo, void *data);
int		fifo_get(FIFO *fifo, void *data);
int		fifo_isEmpty(FIFO *fifo);

typedef struct tagLISTE {
	struct tagLISTE	*prev, *next;
} LISTE;

typedef struct tagLIST {
	int				datanum;
	int				datasize;
	int				pos;
	LISTE			*cur;
	LISTE			*outdata;
} LIST;

LIST	*list_new(int size);
void	list_destroy(LIST *list);

void	list_top(LIST *list);
void	list_next(LIST *list);
void	list_prev(LIST *list);
void	list_moveTo(LIST *list, int index);
int		list_getData(LIST *list, void *data);
int		list_setData(LIST *list, void *data);
int		list_insertData(LIST *list, void *data);
int		list_deleteData(LIST *list);

int		list_isOut(LIST *list);
int		list_getDataNum(LIST *list);
int		list_isEmpty(LIST *list);

#endif  HEADER_FIFO
