Subversion Repositories f9daq

Rev

Rev 17 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#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__ */