CX_COND_WRAPPER
Klassenhierarchie
- CX_CLASS
- CX_SIMPLE
- CX_TERMED
- CX_EXPANDABLE
- CX_DESCRIPTIVE_REF
- CX_COND_WRAPPER
- CX_DESCRIPTIVE_REF
- CX_EXPANDABLE
- CX_TERMED
- CX_SIMPLE
Beschreibung:
Ein Conditioned Wrapper ist ein Conditioned Bag, der sich nach außen hin wie ein Wrapper verhält. D.h. Operationen, die mit dem CX_COND_WRAPPER durchgeführt werden (Put, Copy, etc.), werden mit dem Objekt durchgeführt, auf das dieses Objekt zeigt.
Beim Zugriff auf einen Conditioned Wrapper (W) werden der Reihe nach die Formeln ausgewertet, die in dem Conditioned Bag (C) abgelegt sind. Dazu werden die Objekte herangezogen, die sich auf dem Plugspace befinden. Sobald eine Formel gefunden wurde, dessen Wahrheitswert 1 ist, wird das Objekt (O) zurückgeliefert, das mit dieser Formel verbunden ist. Von InstantView® sieht das so aus, als wäre der Conditioned Wrapper genau dieses Objekt. Der Programmierer kann den Conditioned Wrapper also so behandeln, als wäre es das gewünschte Objekt.
Achtung!
Im Gegensatz zum descriptive und overwriting wrapper kann der Conditioned Wrapper keine zusätzlichen Attribute aufnehmen oder gar Werte überschreiben. Alle Operationen werden unmittelbar an das jeweilige Objekt durchgeleitet! Der Conditioned Wrapper ist quasi transparent.
Wichtig!
Vor jedem Zugriff auf einen Conditioned Wrapper muss gewährleistet sein, dass der Plugspace korrekt gesetzt ist. Im günstigsten Fall erscheint bei einem falschen Plugspace eine Fehlermeldung, dass kein passendes Objekt gefunden wurde, im schlimmsten Fall wird ein falsches Objekt oder, noch schlimmer, zufälligerweise das richtige Objekt zurückgeliefert.
Code-Beispiel:
Var(condWrapper,a) CreateTransObject(CX_COND_WRAPPER) // Conditioned Wrapper (W) erzeugen -> condWrapper CreateTransObject(CX_PERSON) -> a // Objekt (O) erzeugen "Alpha" a Put(name) "counter = 0" a condWrapper Call(GetConditionedBag) Insert // Objekt dem Conditioned Wrapper hinzufügen // unter der Bedingung, dass "x = 0" ist // (anstelle von counter kann ein beliebiger Slot stehen) CreateTransObject(CX_CONTAINER) // Objekt erzeugen, dass "x = 0" enthält 0 Over Put(counter) PlugSpace // "counter = 0" befindet sich jetzt im PlugSpace condWrapper Copy(name) Attention // Gibt "Alpha" aus
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
GetConditionedBag | OBJECT | Liefert den Conditioned Bag zurück, auf dem CX_COND_WRAPPER basiert | ||
Pick | OBJECT | Pickt das Objekt aus dem enthaltenen Conditioned Bag heraus, das zuerst zu den Werten auf dem Plugspace passt | ||
GetDomain | INTEGER | Domain dieses Objektes | ||
GetSiblings | COLLECTION | Alle Siblings dieses Objektes | ||
GetSiblings2 | COLLECTION | Alle Siblings dieses Objektes | ||
SetDomain | INTEGER, INTEGER | Domain setzen | ||
string | INTEGER | CX_STRING | Liefert die String-Darstellung des Objektes | |
Unlink2 | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
VerifySiblings | INTEGER | Ring der Austauschobjekte prüfen |
* MA = Member-Access-Funktion,
grau unterlegt = geerbte Funktion
Modul | Kurzbeschreibung |
---|---|