Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

CGrid Class Template Reference

Zweidimensionales dynamisches Array beliebigen Elementtyps. More...

#include <CGrid.h>

Inheritance diagram for CGrid::

CAbstractGrid CReferenceGrid List of all members.

Public Methods

Protected Methods

Protected Attributes


Detailed Description

template<class T> class CGrid

Das Klassentemplate implementiert auf der Basis der CAbstractGrid - Klasse ein zweidimensionales dynamisches Array. Der Elementtyp wird durch den Templateparameter T festgelegt. Da der Speicher für die Elemente dynamisch alloziiert wird, können die Ausmaße des Arrays zur Laufzeit geändert werden.

Note:
Die Klasse eignet sich nicht zur Aufbewahrung von Referenzen oder dynamisch alloziierten Daten, da bei einer Größenänderung des Arrays, insbesondere einer Verkleinerung, der Speicher für die überschüssigen Elemente nicht freigegeben wird. Die Klasse verfügt jedoch bereits über Mechanismen, die eine Implementierung eines solchen Verhaltens in abgeleiteten Klassen erleichtern.


Constructor & Destructor Documentation

template<class T>
CGrid< T >::CGrid<T> ( )
 

Der Standardkonstruktor erzeugt ein NULL-Grid. Dieses Grid hat die Ausmaße 0 x 0 und enthält somit keine Elemente. Das Elementfreigabeflag wird standardmäßig auf false gesetzt.

template<class T>
CGrid< T >::CGrid<T> ( int intWidth,
int intHeight )
 

Der zusätzliche Konstruktor erzeugt ein Gird mit den Ausmaßen intWidth x intHeight. Das Elementfreigabeflag wird standardmäßig auf false gesetzt. Der Speicherbereich für die Elementdaten wird durch Nullen überschrieben.

template<class T>
CGrid< T >::CGrid<T> ( CGrid< T > & objGrid )
 

Der Kopierkonstruktor verhält sich analog zum Zuweisungsoperator. Zunächst wird die Größe des Zielgrids an die Größe des Quellgrids angepaßt. Danach werden die Griddaten Elementweise kopiert, um ein mögliches Deepcopy des Elementtyps T zu verwenden.

template<class T>
CGrid< T >::~CGrid<T> ( ) [virtual]
 

Der Standarddestruktor löscht zunächst den Elementspeicherbereich mittels clear(). Dadurch wird der Speicher, den ein evtl. dynamisch alloziiertes Element belegt freigegeben, falls das DisposeData - Flag zuvor gesetzt wurde. Danach werden die Gittermaße auf 0 x 0 gesetzt, was zur Folge hat, das der Elementspeicherbereich freigegeben wird.


Member Function Documentation

template<class T>
void CGrid< T >::disposeElement ( int intX,
int intY ) [protected, virtual]
 

Diese Methode wird im Zusammenhang mit DisposeData verwendet. Innerhalb der CGrid - Klasse ist sie leer, und hat somit keinerlei Auswirkung. In abgeleiteten Klassen sollte sie überschrieben werden, um den Speicher freizugeben, der von einem dynamisch alloziierten Element, oder einer Objektreferenz belegt wird.

Reimplemented in CReferenceGrid.

template<class T>
void CGrid< T >::resize ( int intNewWidth,
int intNewHeight ) [virtual]
 

Die Methode ändert die Ausmaße des Grids. Dabei bleiben die Elementdaten weitestgehend erhalten. Ebenfalls wird der Speicherbereich für die Elementdaten durch die Methode reorganisiert, insbesondere bei einer Änderung der Grid-Breite. Eventuell neu hinzugekommene Elemente werden mit Null-Werten initialisiert.

Remarks:
Ist das DisposeData - Flag auf true gesetzt, so ruft die Methode für jedes Element, welches aufgrund der Größenänderung gelöscht werden soll, die Methode disposeElement() auf.

Reimplemented from CAbstractGrid.

template<class T>
void CGrid< T >::clear ( ) [virtual]
 

Die Methode überschreibt den Speicherberich für die Elementdaten mit Null-Werten.

Remarks:
Ist das DisposeData - Flag gesetzt, so wird zunächst für jedes Gridelement die Methode disposeElement() aufgerufen.

Reimplemented from CAbstractGrid.

template<class T>
void CGrid< T >::clear ( const T & objClearElement ) [virtual]
 

Die Methode löscht das Grid, indem jedes Element mit dem Inhalt von objClearElement überschrieben wird.

Remarks:
Ist das DisposeData - Flag gesetzt, so wird zunächst für jedes Gridelement die Methode disposeElement() aufgerufen.

template<class T>
void CGrid< T >::set ( int intX,
int intY,
const T & data ) [inline]
 

Weist dem Element mit den Koordinaten intX und intY data als Wert zu.

Note:
Für einen schnelleren Zugriff findet keine Bereichsüberprüfung statt.

template<class T>
T & CGrid< T >::get ( int intX,
int intY ) [inline]
 

Gibt den Inhalt des Elements mit den Koordinaten intX und intY zurück.

Note:
Für einen schnelleren Zugriff findet keine Bereichsüberprüfung statt.

template<class T>
CGrid< T > & CGrid<T>::operator= ( const CGrid< T > & source ) [inline]
 

Der überladene Zuweisungsoperator sorgt zunächst dafür, dass die Größe des Zielgrids an die Größe des Quellgrids angepaßt wird. Das Kopieren geschieht komponentenweise, um eine möliche Unterstützung eines Deepcopy des Elementtyps T auszunutzen.


Member Data Documentation

template<class T>
bool CGrid<T>::DisposeData [protected]
 

Mit Hilfe dieses Flags kann festgelegt werden, ob bei einer Größenänderung des Arrays, oder beim Löschen der Elemente der Speicher, der durch diese Elemente verbraucht wird freigegeben werden soll. Dies ist nur sinnvoll, falls es sich bei den Elementen um Objektreferenzen oder Zeiger handelt.


The documentation for this class was generated from the following file:
Generated at Fri Apr 19 16:53:06 2002 for GLFramework by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001