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

CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiTree / Erweiterung des Baums /

MovePathAuto - Pfad anlegen und Sichtfenster wechseln

[C++] CxiError CxiTree :: MovePathAuto (const char *path, CxiLong options = cxiOptAutoCreate)
[C] CxiError cxiMovePathAuto (CxiHandle self, const char *path, CxiLong options)

[S1:BASIS] Wechselt das aktuelle Sichtfenster des CXI-Baums, der Pfad wird ggf. angelegt

path:
Pfadname der Unterbaum-Variablen, die das neue Sichtfenster wird

options:
VERHALTEN, WENN KNOTEN NICNT EXISTIERT (nur eine Angabe möglich):
- cxiOptNoCreate (=0): Knoten nicht automatisch anlegen;
- cxiOptAutoCreate (Vorgabe): Knoten anlegen, falls eine Komponente nicht existiert;
- cxiOptForceCreate: Knoten anlegen, falls eine Komponente nicht existiert oder nicht vom Typ cxiTypeSub ist;
OPTIONALE ZUSÄTZE (mit ODER verknüpft):
- cxiOptAutoReloc: Stringvariablen als Relokationen auffassen.

return:
0 ok, sonst Fehler

Mit dieser Funktion wird das Sichtfenster vom aktuellen Knoten auf einen beliebigen anderen Knoten verschoben, wobei jede nicht existierende Komponente des Pfades automatisch angelegt werden kann.

Der anzugebende Pfadname besteht aus einer Folge von Variablennamen, die jeweils durch Slash oder Backslash getrennt sind. Die Funktion arbeitet die einzelnen Komponenten ab, indem jeweils ein MoveDownAuto durchgeführt wird. Um allgemein verwendbar zu sein, akzeptiert die Funktion vier Sonderfälle:

- Ist das erste Zeichen von path ein Pfadtrennzeichen, so wird vor der weiteren Auswertung MoveHome ausgeführt, d.h. die Bewegung im Baum beginnt bei der Wurzel. Andernfalls beginnt die Abarbeitung beim aktuellen Sichtfenster.

- Ist eine Komponente von path gleich ".." (zwei Punkte), so wird anstelle von MoveDownAuto ein MoveUp ausgeführt, also eine Bewegung zum Elternknoten.

- Ist eine Komponente von path gleich "." (ein Punkt), so wird keine Bewegung ausgeführt, das Sichtfenster bleibt unverändert.

- Leere Komponenten, also zwei oder mehrere aufeinander folgende Trennzeichen oder ein Trennzeichen am Ende von path, werden ignoriert.

Ist die Option cxiOptAutoReloc angegeben und bezeichnet eine Komponente eine String-Variable, so wird deren Inhalt als Pfadangabe aufgefasst. Durch einen rekursiven Aufruf wird zunächst dieser String abgearbeitet, bevor in der ursprünglichen Pfadangabe fortgefahren wird. Auf diese Art und Weise sind Verschiebungen (Relokationen) innerhalb des Baums für das Programm transparent. Relokationen können bis zu 15 Ebenen tief geschachtelt werden.

ACHTUNG: Die Vorgabe für den Parameter options (cxiOptAutoCreate) ist nicht gleich 0. Dies ist zu beachten, wenn der Parameter explizit angegeben wird. Wird also nur cxiOptAutoReloc für den Parameter options angegeben, so ist dies gleichbedeutend mit cxiOptNoCreate|cxiOptAutoReloc.

Sind sowohl cxiOptForceCreate als auch cxiOptAutoReloc angegeben, so hat die Option cxiOptForceCreate Vorrang vor cxiOptAutoReloc: Ist eine Komponente des Pfades eine String-Variable, so wird sie durch einen neuen leeren Knoten ersetzt!

Die Kombination von cxiOptAutoReloc mit einer der Optionen cxiOptAutoCreate oder cxiOptNoCreate ist problemlos möglich, es treten keine Konfliktsituationen auf.

Die verwandte const-Funktion MovePath bewegt das Sichtfenster, ohne neue Knoten anzulegen; sie liefert einen Fehlercode, wenn eine oder mehrere der Komponenten des Pfades nicht existieren.

Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar. Der bisherige Parameter psep wird ab Version 2.07 60 nicht mehr unterstützt, als Pfadtrennzeichen gelten NUR NOCH Slash und Backslash.

Aus Kompatibilitätsgründen existiert die Memberfunktion
CxiError CxiTree :: MovePathAuto (const char *path, char psep, CxiLong options)
Hier muss für psep einer der Werte 0, '/' oder '\\' angegeben sein, sonst ergibt sich ein Fehler.

Siehe auch:
NewSub
MoveDownAuto
MovePath
MoveDown


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

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