CMD Enhancements:
[reactos.git] / rosapps / devutils / vmingw / CList.h
1 /********************************************************************
2 * Module: CList.h. This is part of WinUI.
3 *
4 * License: WinUI is covered by GNU General Public License,
5 * Copyright (C) 2001 Manu B.
6 * See license.htm for more details.
7 *
8 ********************************************************************/
9 #ifndef CLIST_H
10 #define CLIST_H
11
12 #include <stdlib.h>
13
14 /********************************************************************
15 * Generic CNode.
16 ********************************************************************/
17 class CNode
18 {
19 public:
20 CNode() {next = prev = NULL; /*type = 0;*/};
21 virtual ~CNode() {};
22
23 CNode * prev;
24 CNode * next;
25 long type;
26
27 protected:
28
29 private:
30 };
31
32 /********************************************************************
33 * Generic List.
34 ********************************************************************/
35 #define FILE_FOUND 0
36 #define EMPTY_LIST 1
37 #define INSERT_FIRST 2
38 #define INSERT_LAST 3
39 #define INSERT_BEFORE 4
40 #define INSERT_AFTER 5
41
42 class CList
43 {
44 public:
45 CList() {first = last = current = NULL; count = 0;};
46 virtual ~CList();
47
48 CNode * GetCurrent() {return current;};
49 CNode * First();
50 CNode * Last();
51 CNode * Prev();
52 CNode * Next();
53
54 void InsertFirst(CNode *node);
55 void InsertLast(CNode *node);
56 void InsertBefore(CNode *node);
57 void InsertAfter(CNode *node);
58 bool InsertSorted(CNode * newNode);
59 int InsertSorted_New(CNode * newNode);
60
61 void DestroyCurrent();
62 void Destroy(CNode * node);
63 void DestroyList();
64
65 int Length();
66
67 protected:
68 virtual int Compare(CNode *, CNode *) {return 0;};
69
70 CNode *first;
71 CNode *last;
72 CNode *current;
73 int count;
74
75 private:
76 };
77
78 #endif
79