82 lines
1.5 KiB
C++
82 lines
1.5 KiB
C++
/* ---------------------------------------------------------------------------
|
|
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 |