Funktionsbeschreibungen

Die notwendigen Funktionen der Listenklasse lassen sich grob in fünf Gruppen unterteilen:

Konstruktion / Destruktion

Konstruktor

template <class T> CList<T>::CList(); 

Der Konstruktor initialisiert lediglich die Member-Variable auf das erste Listenelement mit NULL, um den korrekten internen Zustand der Liste sicherzustellen.

Destruktor

template <class T> CList<T>::CList(); 

Der Destruktor der Liste zerstört sämtliche erzeugten Listenelement - Objekte. Die direkt darin gespeicherten Daten gehen dadurch verloren. Werden Pointer in der Liste gespeichert, werden die darin angegebenen Speicherbereiche nicht freigegeben.

Datenzugriffsfunktionen

Es werden drei Datenzugriffsfunktionen implementiert. Die beiden lesenden Funktionen nutzen Referenzparameter um die gesicherten Daten zurückzuliefern.

Elemente sichern

template <class T> void CList<T>::AddData (T pData); 

Diese Zugriffsfunktion fügt das Datum pData am Ende der Liste ein. Weitere Fehlerkontrollen oder -werte sind hier nicht notwendig.

Parameter:

Elemente lesen

template <class T> virtual int CList<T>::GetData (int iPos,
T & pData);

GetData liefert im übergebenen Referenzparameter das gespeicherte Datum zurück.

Parameter:

Rückgabewerte

Elemente lesen und entfernen

template <class T> virtual int CList<T>::RemoveData (int iPos,
T & pData);

RemoveData liefert ein gespeichertes Datum zurück und entfernt das Element aus der Liste.

Parameter:

Rückgabewerte

Hilfsfunktionen zur Statusabfrage

Status: Liste leer

template <class T> int CList<T>::IsEmpty();

Mit Hilfe von IsEmpty kann festgestellt werden, ob bereits Elemente in der Liste gespeichert sind.

Rückgabewerte:

Private Hilfsfunktionen und -klassen

Suchen eines bestimmten Listenelements

// private: template
<class T> virtual CList<T>::CElement * CList<T>::GetElement(int iPos);

Die private Hilfsfunktion GetElement sucht auf der Basis des Indexes iPos ein Element der Liste.

Parameter

Rückgabewerte

Hilfsklasse CList::CElement

Diese Hilfsklasse wird zum speichern der einzelnen Listenelemente verwendet. Die Funktionen in dieser Klasse beschränken sich auf Zugriffsfunktionen für die einzelnen Datenelemente und werden im nächsten Abschnitt näher erläutert. Hier soll lediglich der Konstruktor erwähnt werden:

Konstruktor der Hilfsklasse CList::CElement

template <class T> CList<T>::CElement::CElement (CElement * pNext, 
T pData);

Dieser Konstruktor initialisiert beide Member - Variablen der Hilfsklasse CElement.

Parameter:

Debug - Funktionen

Es existiert lediglich eine einzige Debug - Funktion zur Ausgabe des aktuellen Listeninhaltes. Diese Funktionen können nur verwendet werden, wenn während des kompilierens das Define _DEBUG gesetzt ist.

Ausgeben des aktuellen Listeninhalts

#ifdef _DEBUG 
template <class T> void CList<T>::Dump();
#endif //_DEBUG

Die Dump - Funktion gibt von jedem vorhanden Listenelement die Speicheradresse aus und übergibt anschlißend das dereferenzierte Datum dem IOStrem cout. Auf Grund dieser Konzeption kann die Funktion nur für Zeigerlisten auf Basis - Datentypen oder auf Objektzeiger für die der Stream - Operator "<<" definiert ist.