#ifndef __KLIST_H__
 
#define __KLIST_H__
 
 
 
//-------------------------------------------------------------------------------------------
 
// klist.h - header parts to maintain a doubly linked list (org microsoft)
 
//
 
// Please announce changes and hints to ARW Elektronik
 
// 
 
//
 
// $Log: Klist.h,v $
 
// Revision 1.2  2004/07/24 07:47:46  klaus
 
// revised, removed wrong license terms
 
//
 
//
 
// what                                                              who    when
 
// first steps                                                       AR     07.11.1999
 
//
 
 
 
typedef struct item_tag FAR * LIST;
 
typedef LIST FAR * PLIST;
 
 
 
void APIENTRY List_Init(void);
 
/* MUST BE CALLED BEFORE ANY OF THE OTHER FUNCTIONS. */
 
 
 
LIST APIENTRY List_Create(void);
 
/* Create a list.  It will be initially empty */
 
 
 
void APIENTRY List_Destroy(PLIST plst);
 
/* Destroy *plst.  It does not need to be empty first.
 
|  All storage directly in the list wil be freed.
 
*/
 
 
 
LPVOID APIENTRY List_NewFirst(LIST lst, UINT uLen);
 
/* Return the address of the place for Len bytes of data in a new
 
|  item at the start of *plst
 
*/
 
 
 
void APIENTRY List_Delete(LPVOID Curs);
 
/*------------------------------------------------------------------
 
| Delete the item that Curs identifies.
 
| This will be only a few (maybe as little as 3) machine instructions
 
| quicker than DeleteAndNext or DeleteAndPrev but leaves Curs dangling.
 
| It is therefore NOT usually to be preferred.
 
| It may be useful when you have a function which returns an LPVOID
 
| since the argument does not need to be a variable.
 
|     Trivial example: List_Delete(List_First(L));
 
-------------------------------------------------------------------*/
 
 
 
BOOL APIENTRY List_IsEmpty(LIST lst);
 
/* Return TRUE if and only if lst is empty */
 
 
 
#endif /* __KLIST_H__ */