Lade...
 

UnWrapObject

UnwrapObject

UnwrapObject

Stack
Stack   Beschreibung
Stack(In)   ein 'umhülltes' Objekt
Stack(Out)   das Objekt (ohne Hülle)

erwartet ein Objekt der Klasse CX_DESCRIPTIVE_REF, CX_OVERWRITING_REF oder CX_COND_WRAPPER auf dem Stack und ersetzt es durch das von diesem referenzierte Objekt. Das Wrapper-Objekt wird (logisch) gelöscht, die Referenz zum umhüllten Objekt bleibt im Wrapper erhalten. Die Operation

      object UnwrapObject

entspricht der Anweisungsfolge

      object Dup Get(_object) Swap DeleteObject

Eine Ausnahme stellen Conditioned Wrapper dar: In diesem Fall wird nicht das umhüllte Objekt auf dem Stack zurückgelegt (was unsinnig wäre, da es ja mehrere Objekte geben kann), sondern eine Kopie des enthaltenen Conditioned Bag. Der originale Conditioned Bag wird der Garbage Collection übergeben. Sollte der Conditioned Wrapper persistent sein, dann wird folglich auch eine persistente Kopie des Wrappers zurückgegeben.

Falls auf dem Stack ein Objekt übergeben wurde, welches nicht von CX_DESCRIPTIVE_REF abgeleitet ist, dann tut UnwrapObject nichts und legt das übergebene Objekt wieder auf den Stack. Es wird in diesem Fall kein Fehler ausgegeben. Dies betrifft auch noch nicht instanziierte CX_LAZY_CREATOR-Objekte.