12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /* ---------------------------------------------------------------------------
- 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
|