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