aboutsummaryrefslogtreecommitdiff
path: root/Src/nde/LinkedList.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/nde/LinkedList.h')
-rw-r--r--Src/nde/LinkedList.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/Src/nde/LinkedList.h b/Src/nde/LinkedList.h
new file mode 100644
index 00000000..4fffddaf
--- /dev/null
+++ b/Src/nde/LinkedList.h
@@ -0,0 +1,82 @@
+/* ---------------------------------------------------------------------------
+ Nullsoft Database Engine
+ --------------------
+ codename: Near Death Experience
+ --------------------------------------------------------------------------- */
+
+/* ---------------------------------------------------------------------------
+
+ Double-Linked List Class Prototypes
+
+ --------------------------------------------------------------------------- */
+
+#ifndef __LINKEDLIST_H
+#define __LINKEDLIST_H
+
+class LinkedListEntry
+{
+public:
+ LinkedListEntry *Next;
+ LinkedListEntry *Previous;
+public:
+ LinkedListEntry *GetNext() const;
+ LinkedListEntry *GetPrevious() const;
+ LinkedListEntry();
+ virtual ~LinkedListEntry();
+};
+
+template <class T> class VListEntry : public LinkedListEntry
+{
+public:
+ void SetVal(T val)
+ {
+ Val = val;
+ }
+ T GetVal(void)
+ {
+ return Val;
+ }
+
+private:
+ T Val;
+};
+
+template <class T> class PListEntry : public LinkedListEntry
+{
+public:
+ void SetVal(T *val)
+ {
+ Val = val;
+ }
+ T *GetVal(void)
+ {
+ return Val;
+ }
+
+private:
+ T *Val;
+};
+
+
+typedef bool (*WalkListProc)(LinkedListEntry *Entry, int, void*, void*);
+
+class LinkedList
+{
+protected:
+ int NElements;
+ LinkedListEntry *Head;
+ LinkedListEntry *Foot;
+
+public:
+ LinkedList();
+ ~LinkedList();
+ void AddEntry(LinkedListEntry *Entry, bool Cat);
+ void RemoveEntry(LinkedListEntry *Entry);
+
+ void WalkList(WalkListProc WalkProc, int ID, void *Data1, void *Data2);
+ int GetNElements(void) { return NElements; }
+ LinkedListEntry *GetHead(void) { return Head; }
+ LinkedListEntry *GetFoot(void) { return Foot; }
+};
+
+#endif \ No newline at end of file