Sprung zum Seitenende Struktur Themen A...Z Titel << >>

CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiTree / Ableitung CxiTreeSubst /

CxiTreeSubst() - Teilbaum eines CXI-Baums

[C++] CxiTreeSubst :: CxiTreeSubst (CxiTree& basis, CxiName pname = 0)
[C] CxiHandle cxiCreateCxiTreeSubst (CxiHandle basis, CxiName pname)

[S1:BASIS] Benutzt einen CXI-Teilbaum als eigenständigen Baum

basis:
CXI-Baum, dessen Teilbaum benutzt werden soll.

pname:
Bei NULL (Vorgabe) wird das aktuelle Sichtfenster von basis zur Wurzel des TreeSubst, sonst der durch pname angegebene Unterbaum des Sichtfensters.

return:
Die C-Funktion liefert das Handle des neuen CXI-Objekts, NULL im Fehlerfall

Die Klasse CxiTreeSubst verwaltet den angegebenen Teilbaum von basis als eigenen Baum. Dies entspricht etwa dem SUBST-Befehl des Dateisystems. Der als TreeSubst benutzte Teilbaum besitzt ein von basis unabhängiges eigenes Sichtfenster.

Das CxiTreeSubst-Objekt erbt alle CxiTree-Eigenschaften von basis, also das Speichermedium (Datei, Heap) und die Optionen (cxiOptReadOnly, cxiOptVirtual etc.). Es kann die Ableitung CxiTreeSubstRO statt CxiTreeSubst verwendet werden, um Veränderungen des Basis- über das Subst-Objekt zu verhindern.

Nicht automatisch geerbt werden die von der Klasse CxiNode verwalteten Eigenschaften, insbesondere Resource-Blöcke. Diese müssen für jedes CxiTreeSubst-Objekt getrennt definiert werden oder mit der Funktion InheritResource explizit vererbt werden.

Solange der TreeSubst existiert, sind folgende Einschränkungen zu beachten:

- Der als Parameter basis angegebene Baum darf nicht geschlossen oder gelöscht werden, solange dieser oder ein anderer auf basis bezogener TreeSubst existiert.

- Der Programmierer muss sicherstellen, dass niemals derselbe Knoten sowohl über basis als auch über den TreeSubst verändert wird. In diesem Fall können sonst die interne CXI-Datenstruktur und der Heap des Programms zerstört werden. Allgemein sollte vermieden werden, dass in basis und in auf basis bezogenen CxiTreeSubst-Objekten der gleiche Knoten mehrfach das aktuelle Sichtfenster ist.

- Es sollten keine Löschungen von Knoten oder ganzen Teilbäumen vorgenommen werden, da das CXI-System in diesem Fall nicht immer feststellen kann, ob dadurch eine Unterbaum-Referenz ungültig wird. Diese Einschränkung gilt nicht, wenn sichergestellt ist, dass sich weder das Sichtfenster von basis noch das Sichtfenster von irgendeinem auf basis bezogenen CxiTreeSubst-Objekt innerhalb des zu löschenden Teilbaums befinden.

Anmerkung: Die Neuanlage von Knoten ist problemlos möglich, solange Punkt 2 erfüllt ist.

Mit CxiTreeSubst ist es möglich, eine "CxiTree-Collection" aufzubauen, indem ein CXI-Baum (Parameter basis) erstellt wird, dessen Wurzel nur aus Unterbaum-Variablen besteht. Für jede dieser Variablen wird ein CxiTreeSubst-Objekt angelegt, das den entsprechenden Teilbaum bearbeitet. Über basis selbst erfolgen keine Zugriffe, damit sind die obigen Einschränkungen erfüllt. Ist basis ein CxiTreeFile-Objekt, erhält man durch dieses Vorgehen quasi eine Datei, die mehrere CXI-Bäume enthält.

Die Klasse CxiTreeSubst erbt die Baum-Funktionen von CxiTree, alle anderen Zugriffsfunktionen - auch den Destruktor - von CxiNode. Ob der Konstruktor erfolgreich war, kann anschließend durch einen Aufruf von Status() abgefragt werden.

Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar. Die C-Funktion ist als Makro implementiert.

Siehe auch:
Klassen CxiTreeSubst und CxiTreeSubstRO
InheritResource - Resourcezuordnungen erben
CxiTreeSubstRO() - {Konstruktor für geschützten Teilbaum}
DeleteCxiTree - Freigabe eines CxiHandle


[i] CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 281 von 855, Thema 8347 (CtrTreeSubst)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

Sprung zum Seitenanfang Struktur Themen A...Z Titel << >>