node: Konstruktion

Top  Previous  Next

Skripte > Klassen-Elemente und C++-Befehle > interpretierte C++-Anweisungen > node / dnode > node: Konstruktion

 

Funktionen zur Konstruktion von node-Objekten

 

Einzelne Knoten können mit oder ohne Initialisierung-Parameter erzeugt werden:

 

node()

node(str& xsLabel)

node(str& xsLabel, str& xsValue)

 

Eine neues node-Objekt wird erzeugt und je nach Parametern wird das Label mit xsLabel und er Wert mit xsValue initialisiert.

 

 

node(const node& xOther)

 

Eine Referenz auf das node-Objekt xOther wird erzeugt. D.h. der neue Knoten hat gleiches Label, gleichen Wert und dieselben Kinder wie das bisherige. Wird einer der beiden Knoten verändert, so ändert sich der zweite mit.

 

 

Die (vom Baum isolierte) Kopie eines Knotens erhält man durch:

 

node           clone()

 

Beispiel:

 

node nCopy = root_node.bottomLastChild().clone();

 

Um einen Knoten einer Baumstruktur hinzuzufügen, wird eine der folgenden Funktionen aufgerufen:

 

bool        addChildFirst( const node& xNewChild)

bool        addChildLast( const node& xNewChild)

node        add(const str& xsLabel, const str& xsValue)

 

Durch die erste Funktion wird der neue Knoten zum ersten Kind-Knoten desjenigen Knotens, für den die Funktion addChildFirst aufgerufen wurde. Durch den Aufruf von addChildLast wird der übergebene Knoten zum letzten Kind-Knoten. Es wird jeweils true zurückgegeben, wenn das Einfügen des Knotens erfolgreich war.

Die dritte Funktion add kann als Akürzung gelesen werden für:

 

addChildLast( node( xsLabel, xsValue )

 

d.h. ein neuer Knoten mit dem Label xsLabel und dem Wert xsValue wird als letzter Kind-Knoten eingefügt. Zurückgegeben wird der neue Knoten oder node::npos, falls das Einfügen mißlang.

 

bool        addChildBefore( const node& xnNewChild, const node& xnRefChild)

 

Mit dieser Funktion wird der neue Knoten xnNewChild vor dem vorhandenen Knoten xnRefChild eingefügt. Falls xnRefChild d/node::npos ist, wird der Knoten als letzter Kind-Knoten eingefügt.

 

node        removeChild(const node& xnOldChild)

 

Ein vorhandener Kind-Knoten xnOldChild kann mit dieser Funktion aus dem Baum entfernt werden. Sie liefert den entfernten Knoten zurück. Wenn xnOldChild kein Kindknoten ist, wird node::npos zurückgeliefert,

 

 

node und dnode verhalten sich verschieden, wenn versucht wird einen Knoten, der bereits in einen Baum eingefügt wurde, nochmals an anderer Stelle einzufügen:

 

Für einen node-Knoten ist die verboten. und wird mit einer Fehlermeldung quittiert.

 

Für einen dnode-Knoten bedeutet diese Operation eine Verschiebung: der Knoten samt seinen Unterknoten wird an der gewünschten Stelle eingefügt, verschwindet aber an der alten Position. Dies kann durchaus nützlich sein.

 

Der Grund dieses unterschiedlichen Verhaltens liegt in der unterschiedlichen Speicherverwaltung: nodes werden intern referenz-gezählt und dnodes werden extern durch das XMLDocument verwaltet.

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English