CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiNode /
class CxiNode : public CxiClassMemberStruct
CxiNode ist die Basisklasse des gesamten CXI-Systems, siehe Klassenhierarchie. Die Membervariablen sind aus programmtechnischen Gründen in der Struktur CxiClassMemberStruct zusammengefasst; alle Zugriffe können über Memberfunktionen ausgeführt werden, ein direkter Zugriff auf diese Variablen ist weder notwendig noch sinnvoll noch portabel.
Ein CXI-Knoten ist eine allgemeine Schnittstelle zwischen Programmen oder Programm-Moduln. In einem solchen Objekt können beliebige Datenobjekte unter jeweils einem Namen abgelegt werden. Der Empfänger benötigt nur den Namen des Datenobjekts, um es aus dem CXI-Knoten zurückzugewinnen.
Der Zugriff über Namen statt über eine feste Struktur erlaubt die Übergabe zusätzlicher Parameter in neuen Versionen, ohne dass unnötige Inkompatibilitäten zu alten Versionen auftreten: Tatsächlich als Funktionsparameter übergeben wird in jedem Fall nur das Handle des CXI-Knotens.
Um Platz zu sparen, ist es möglich, Variablen über Nummern statt über Namen anzusprechen. Dieser Zugriff spart Platz beim Aufruf und im CXI-Knoten, hat jedoch keinen Einfluss auf die allgemeine Verwendbarkeit: Die Variablennummern sind keine Offsets! Mit Nummern lassen sich auch indizierte Listen problemlos in einem CXI-Knoten speichern.
Der CXI-Knoten selbst ist eine im Hauptspeicher befindliche Struktur, mit der der Anwender und der Programmierer nicht direkt in Berührung kommen. Für den Zugriff auf die Daten stehen eine Menge von Funktionen bereit, die die Verwaltung übernehmen. Sowohl unter C (Funktions-Schnittstelle) als auch unter C++ (Klassen-Schnittstelle) sind die Zugriffsmethoden verfügbar.
Die Funktionen unterstützen folgende Bereiche:
Erstellen, Duplizieren, Löschen eines CXI-Knotens
Setzen, Auslesen, Löschen von Variablen
Aufruf einer Callback-Funktion
Umnummerierung von Variablen
Diverse Statusabfragen
Automatischer Zugriff auf Resource-Daten
Schreiben und Lesen eines CXI-Knotens in/aus Datei
Testausgabe im Textformat (Debugging)
Um allgemein verwendbar zu sein, muss der CXI-Knoten Objekte aller Basistypen aufnehmen können. Diese Typen sind:
Numerische Werte (long int)
Einzelne Zeichen (Bytes)
Logische (boolesche) Werte
Datenzeiger (void *)
Funktionszeiger (Callbacks)
Zeichenketten
Listen von Zeichenketten
Character-Arrays
Geschachtelte CXI-Knoten (Nicht-CXI-Baum)
Formatfreie Binärblöcke
NIL
Der logische Aufbau eines CXI-Knotens ist vergleichbar mit einer zweispaltigen Tabelle. Die erste Spalte ist ein Schlüssel (Name oder Nummer), die zweite Spalte ein diesem Schlüssel zugeordneter Wert, der einen der genannten Typen besitzen kann.
Beispiel:
Schlüssel Wert
------------------------------------------------
PCDATEI C:\SUBDIR\BEISPIEL.DAT
HOSTDATEI 'TESTUSER.DATA.PCFILES(BEISPIEL)'
RICHTUNG SEND
BINAER FALSE
OPTIONEN /W3 /ASCII
In diesem Beispiel enthält der Block Parameter, die für einen Filetransfer nötig sind. Ein beliebiges Programm stellt den Block zusammen und übergibt ihn dann dem Transferprogramm. Dieses wertet die Parameter aus, belegt nicht vorhandene Parameter mit Vorgaben und führt den Transfer durch.
Portabilität:
Diese Klasse ist in allen unterstützten Systemen verfügbar.