PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CTreeItem Klassenreferenz

Klasse für Tree-Elemente. Mehr ...

Öffentliche Methoden

 CTreeItem ()
 Konstruktor. Mehr ...
 
virtual ~CTreeItem ()
 Destruktor. Mehr ...
 
virtual int CompareNode (CTreeItem *item)
 Elemente vergleichen. Mehr ...
 
virtual int CompareValue (void *value)
 Elemente vergleichen. Mehr ...
 
virtual int GetValue (CString *buffer)
 Wert eines Knotens in einem String speichern. Mehr ...
 
int IsFalse (const char *key) const
 
int IsTrue (const char *key) const
 
CTreeItemLeft ()
 Pointer auf linken Knoten auslesen. Mehr ...
 
CTreeItemParent ()
 Pointer auf Parent Knoten auslesen. Mehr ...
 
CTreeItemRight ()
 Pointer auf rechten Knoten auslesen. Mehr ...
 

Private Attribute

signed char balance
 Die Balance des Knotens. Mehr ...
 
CTreeItemleft
 Zeiger auf den linken Kindknoten. Mehr ...
 
CTreeItemparent
 Zeiger auf den Vaterknoten. Mehr ...
 
CTreeItemright
 Zeiger auf den rechten Kindknoten. Mehr ...
 
CTreetree
 Zeiger auf den Baum, dessen Element dieser Knoten ist. Mehr ...
 

Freundbeziehungen

class CTree
 

Ausführliche Beschreibung

Beschreibung:
Diese Klasse dient als Basisklasse für beliebige BaumElemente, die über die Klasse ppl6::CTree innerhalb eines AVL-Baums verwaltet werden.

Bei Verwendung dieser Klasse, müssen die beiden virtuellen Funktionen CTreeItem::CompareNode und CTreeItem::CompareValue implementiert werden.

Beispiel 1
class MyItem : public ppl6::CTreeItem
{
private:
public:
virtual int CompareNode(CTreeItem *item);
virtual int CompareValue(void *value);
};
{
MyItem *other=(MyTree*)item;
int ret=other->data.StrCmp(&data);
if (ret>0) return 1;
if (ret<0) return -1;
return 0;
}
int MyItem::CompareValue(void *value)
{
ppl6::CString *other=(ppl6::CString*) value;
int ret=other->StrCmp(&data);
if (ret>0) return 1;
if (ret<0) return -1;
return 0;
}
Beispiel 2
#include <ppl6.h>
class MyItem : public ppl6::CTreeItem
{
public:
MyItem() {v=0;}
MyItem(int value) {v=value;}
virtual int CompareNode(CTreeItem *item);
virtual int CompareValue(void *value);
int v;
};
{
MyItem *other=(MyItem*)item;
if (other->v > v) return 1;
if (other->v < v) return -1;
return 0;
}
int MyTree::CompareValue(void *value)
{
int *other = (int*)value;
if (*other > v) return 1;
if (*other < v) return -1;
return 0;
}
int main(int argc, char **argv)
{
MyItem *item, *ii;
item=new MyItem(20);
Tree.Add(item);
item=new MyItem(15);
Tree.Add(item);
item=new MyItem(30);
Tree.Add(item);
item=new MyItem(4);
Tree.Add(item);
item=new MyItem(8);
Tree.Add(item);
item=new MyItem(33);
Tree.Add(item);
Tree.Reset();
while ((ii=(MyItem*)Tree.GetNext())) {
printf ("%i\n",ii->v);
}
return 0;
}
Siehe auch

Beschreibung der Konstruktoren und Destruktoren

ppl6::CTreeItem::CTreeItem ( )
Beschreibung:
Im Konstruktor wird das Treeelement initialisiert und die internen Pointer auf NULL gesetzt
ppl6::CTreeItem::~CTreeItem ( )
virtual
Beschreibung:
Im Destruktor wird geprüft, ob das Element noch Teil eines Baums ist. Ist dies deer Fall, wird die Delete-Funktion des Baums aufgerufen, um das Element aus dem Baum zu entfernen.

Dokumentation der Elementfunktionen

int ppl6::CTreeItem::CompareNode ( CTreeItem item)
virtual
Beschreibung:
Damit Elemente sortiert in den Baum eingehangen werden können, werden die Vergleichsfunktionen CompareNode und CompareValue benötigt. Diese sind in der Basisklasse als "virtuell" deklariert und müssen von der abgeleiteten Klasse überschrieben werden. Bei dieser Funktion wird als Parameter ein Pointer auf ein Baum-Element erwartet.
Parameter
[in]itemPointer auf ein Baum-Element, mit dem dieses Element verglichen werden soll
Rückgabe
Die Funktion muss einen der folgenden 4 Werte zurückliefern:
  • 0: Ist der Wert in item identisch mit dem Wert dieses Elements, muss 0 zurückgegeben werden.
  • +1: Ist der Wert in item größer als der Wert dieses Elements, muss +1 zurückgegeben werden
  • -1: Ist der Wert in item kleiner als der Wert dieses Elements, muss -1 zurückgegeben werden
  • -2: Dieser Wert wird im Fehlerfall zurückgegeben und es wird ein Fehlercode gesetzt. Die Tree-Operation muss dann ebenfalls mit einem Fehler abbrechen und diesen Fehlercode zurückgeben.
Achtung
Beim Vergleich zweier Strings kann die Funktion strcmp nicht direkt verwendet werden, da sie laut Definition Werte kleiner oder größer 0 liefert, aber nicht exakt -1 oder +1.

Erneute Implementation in ppl6::grafix::CFontFile und ppl6::CArrayItem.

int ppl6::CTreeItem::CompareValue ( void *  value)
virtual
Beschreibung:
Damit Elemente sortiert in den Baum eingehangen werden können, werden die Vergleichsfunktionen CompareNode und CompareValue benötigt. Diese sind in der Basisklasse als "virtuell" deklariert und müssen von der abgeleiteten Klasse überschrieben werden. Bei dieser Funktion wird als Parameter ein void Pointer auf einen beliebigen Wert erwartet.
Parameter
[in]valuePointer auf einen beliebigen Wert. Die abgeleitete Klasse muss wissen, wie die Daten zu interpretieren sind.
Rückgabe
Die Funktion muss einen der folgenden 4 Werte zurückliefern:
  • 0: Ist der Wert in value identisch mit dem Wert dieses Elements, muss 0 zurückgegeben werden.
  • +1: Ist der Wert in value größer als der Wert dieses Elements, muss +1 zurückgegeben werden
  • -1: Ist der Wert in value kleiner als der Wert dieses Elements, muss -1 zurückgegeben werden
  • -2: Dieser Wert wird im Fehlerfall zurückgegeben und es wird ein Fehlercode gesetzt. Die Tree-Operation muss dann ebenfalls mit einem Fehler abbrechen und diesen Fehlercode zurückgeben.

Erneute Implementation in ppl6::grafix::CFontFile und ppl6::CArrayItem.

int ppl6::CTreeItem::GetValue ( ppl6::CString buffer)
virtual
Beschreibung:
Diese Funktion ist als "virtuell" definiert und kann implementiert werden, um es zu ermöglichen den Wert eines Knotens in einem String abzubilden. Je nach Datentyp kann dies einfach aber auch unmöglich sein. Die Funktion wird in der Regel nur zu debugging-Zwecken verwende.
Parameter
[out]bufferPointer auf einen String, in dem das Ergebnis gespeichert werden soll
Rückgabe
Bei Erfolg liefert die Funktion true (1) zurück, im Fehlerfall false (0). Wurde die Funktion von der Tree-Klasse nicht implementiert, wird immer false zurückgegeben und der Fehlercode 180 gesetzt.
int ppl6::CTreeItem::IsFalse ( const char *  key) const
int ppl6::CTreeItem::IsTrue ( const char *  key) const
CTreeItem * ppl6::CTreeItem::Left ( )

Diese Funktion gibt einen Pointer auf den Knoten zurück, der links von diesem angehangen ist.

Rückgabe
Pointer auf linken Knoten oder NULL, wenn es keinen gibt.
Seit
Eingeführt mit PPL 6.2.6
CTreeItem * ppl6::CTreeItem::Parent ( )

Diese Funktion gibt einen Pointer auf den Vater dieses Knoten zurück.

Rückgabe
Pointer auf den parent Knoten oder NULL, wenn es keinen gibt.
Seit
Eingeführt mit PPL 6.2.6
CTreeItem * ppl6::CTreeItem::Right ( )

Diese Funktion gibt einen Pointer auf den Knoten zurück, der rechts von diesem angehangen ist.

Rückgabe
Pointer auf rechten Knoten oder NULL, wenn es keinen gibt.
Seit
Eingeführt mit PPL 6.2.6

Freundbeziehungen und Funktionsdokumentation

friend class CTree
friend

Dokumentation der Datenelemente

ppl6::CTreeItem::balance
private
ppl6::CTreeItem::left
private
ppl6::CTreeItem::parent
private
ppl6::CTreeItem::right
private
ppl6::CTreeItem::tree
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: