source: trunk/dll/listutil.h@ 1856

Last change on this file since 1856 was 1856, checked in by Steven Levine, 10 years ago

Rework Flesh/Stubby etc. to avoid running on thread 1
Should be ready for release after spurious traps resolved
DbgMsg calls retained - delete/disable before release

File size: 1.6 KB
Line 
1
2/***********************************************************************
3
4 $Id: $
5
6 Linked list utilities
7
8 Copyright (c) 2015 Steven H. Levine
9
10 07 Aug 15 SHL Baseline
11
12***********************************************************************/
13
14#if !defined(LISTUTIL_H)
15#define LISTUTIL_H
16
17// Singly linked list
18typedef struct LISTHEADER {
19 struct LIST *first; // First item in list
20} LISTHEADER;
21typedef LISTHEADER *PLISTHEADER;
22
23typedef struct LIST {
24 struct LIST *next; // Next item in list
25} LIST;
26typedef LIST *PLIST;
27
28// Doubly linked list
29typedef struct LIST2HEADER {
30 struct LIST2 *first; // First item in list
31 struct LIST2 *last; // Last item in list
32} LIST2HEADER;
33typedef LIST2HEADER *PLIST2HEADER;
34
35typedef struct LIST2 {
36 struct LIST2 *next; // Next item in list
37 struct LIST2 *prev; // Previoius item in list
38} LIST2;
39typedef LIST2 *PLIST2;
40
41VOID ListAppend(PLISTHEADER header, PLIST item);
42VOID ListDelete(PLIST header, PLIST item);
43PLIST ListDeleteFirst(PLISTHEADER *header);
44PLIST ListGetFirst(PLISTHEADER header);
45typedef BOOL LISTMATCH(PLIST item, PVOID pdata); // For ListSearch
46typedef LISTMATCH *PLISTMATCH;
47PLIST ListSearch(PLISTHEADER header, PLISTMATCH matchFunc);
48
49VOID List2Append(PLIST2HEADER header, PLIST2 item);
50VOID List2Delete(PLIST2HEADER header, PLIST2 item);
51PLIST2 List2DeleteFirst(PLIST2HEADER header);
52PLIST2 List2GetFirst(PLIST2HEADER header);
53typedef BOOL LIST2MATCH(PLIST2 item, PVOID data); // For List2Search
54typedef LIST2MATCH *PLIST2MATCH;
55PLIST2 List2Search(PLIST2HEADER header, PLIST2MATCH matchFunc, PVOID data);
56
57#endif // LISTUTIL_H
Note: See TracBrowser for help on using the repository browser.