//
// chainedlist.h
//
// chained lists management
//
// g2d library
//
// loïc berthelot, 2004
// based on scol language 2d library
//


#ifndef _G2D_CHAINEDLIST_H_
#define _G2D_CHAINEDLIST_H_

#include <windows.h>

#define ALPHABETIC_SORT 1


typedef struct ChainedList
{
  int          id;
  int		   type;
  void*        item;
  void*		   nxt;
} ChainedList;



typedef struct ObjChainedList
{
	ChainedList* begin;
	ChainedList* end;

	int size;
} ObjChainedList;


void chainedlist_init (ObjChainedList* o);
int  chainedlist_add (ObjChainedList* o, int id, int type, void* item);
void* chainedlist_retreive (ObjChainedList* o, int id, int* type);
int  chainedlist_remove (ObjChainedList* o, int id);
void chainedlist_destroy ();
int  chainedlist_getSize (ObjChainedList* o);
int  chainedlist_enumItems (ObjChainedList* o, void(* callback)(void*,void*), void* param);

int  chainedlist_sort (ObjChainedList* o, int type);







#endif