Source: CList.h
//////////////////////////////////////////////////////////////////////
//
// LISTENKLASSE "CList"
//
// Datei: CList.h
// Zweck: Einfach vorwaerts verkettete Liste zum speichern von
// Pointern auf durch ein Template festgelegte Objekte.
// Autor: Torben Nehmer <Torben.Nehmer@gmx.net>
// Version: 1.30
// Datum: 15.10.1998
//
// Implementierung in:
// CList.cc
//
//////////////////////////////////////////////////////////////////////
#if !defined(INCLUDE_CLIST_HEADER)
#define INCLUDE_CLIST_HEADER
template <class T>
class CList
{
private:
//////////////////////////////////////////////////////////////////////
// Hilfsklasse fuer Datenelemente
//
class CElement
{
private:
T m_pData;
// Pointer auf Daten
CElement * m_pNext;
// Pointer auf naechstes Element
public:
CElement ( CElement * pNext, T pData);
// Standardkonstruktor
//////////////////////////////////////////////////////////////////
// Datenzugriffsfunktionen
CElement * GetNext () const;
// Liefert Pointer auf naechstes Element
void SetNext ( CElement * pNext );
// Setzt Pointer auf naechstes Element
T GetData() const;
// Liefert gespeicherte Daten
void SetData (T data);
// Setzt Daten
};
// Hilfsklasse zum speichern der Objektpointer. Definition als
// Klasse, da Implementierung durch Konstruktor vereinfacht wird.
//////////////////////////////////////////////////////////////////////
// Private Hilfsfunktionen
//
virtual CElement * GetElement (int iPos) const;
// Liefert Pointer auf n-tes Element oder NULL Pointer wenn
// Element nicht vorhanden.
//////////////////////////////////////////////////////////////////////
// Datenelemente
//
CElement * m_pFirst;
// Zeiger auf erstes Datenelement, wird vom Konstruktor
// auf NULL initialisiert.
public:
//////////////////////////////////////////////////////////////////////
// Kunstruktion / Destuktion
//
CList();
// Standardkonstruktor
virtual ~CList();
// Destruktor
//////////////////////////////////////////////////////////////////////
// Zugriffsoperatoren
//
int GetData (int iPos, T & pResult) const;
// Liefert n-ten Datenpointer
virtual int RemoveData (int iPos, T & pResult);
// Liefert n-ten Datenpointer und loescht Element
// GetData UND RemoveData geben 0 zurueck, wenn
// das gesuchte Element nicht existiert.
virtual void AddData (T pData);
// Fuegt ein neues Element am Ende der Liste ein.
//////////////////////////////////////////////////////////////////////
// Statusabfragen
//
int IsEmpty () const;
// TRUE, wenn Liste leer.
//////////////////////////////////////////////////////////////////////
// Debug Funktionen
// Gehen von 'T *' und definierten 'cout << ...' aus!
//
#ifdef _DEBUG
void Dump () const;
// Gibt Pointeradressen und Zeigerinhalte (als T *) auf
// cout aus.
#endif // _DEBUG
};
//////////////////////////////////////////////////////////////////////
// Include der Implementierung wegen Compiler
//
#include "CList.cc"
#endif // INCLUDE_CLIST_HEADER