Lade...
 

Art

Type

Type, Type(zugriffsAusdruck), Type(, TRUE), Type(zugriffsAusdruck, TRUE), Type(STACK), Type(STACK, TRUE)

Parameter: optional ein Zugriffsausdruck

 
Stack Position Beschreibung
Stack(In)  Top Zugriffsausdruck (bei Nutzung vom 'STACK'-Keyword)
  Top-1 ein Objekt
Stack(Out) Top codierter Typ

Ist kein Operand angegeben, wird die Typ des Objekts auf dem Stack zurückgegeben. Für NULL und INVALID auf dem Stack wird -1 zurückgegeben.

Beispiel:

CX_STRING obj Type = if { "obj is a String!" Attention }

Wird ein Zugriffsausdruck angegeben, erhält man den Typ des mittels Zugriffsausdruck erreichten Datenmembers. Ist dies ein Pointer p auf ein Objekt, so erhält man

  • die ClassID des Objekts, auf das p zeigt
  • oder - 1 (NOTHING), falls p = NULL

NOTHING ist auch das Ergebnis, wenn der Zugriffspfad nicht weiter verfolgt werden kann, weil ein Pointer oder eine Funktion NULL liefern. Verweist der Zugriffsausdruck auf einen Slot, sind folgende Fälle möglich:

  • der Typ des Slots oder
  • 0 (UNDEFINED) wenn der Slot in dieser Objektinstanz nicht vorkommt oder
  • - 1 (NOTHING), weil ein Pointer oder eine Funktion NULL liefern  

Wenn sich Type auf ein Objekt der Klasse CX_DESCRIPTIVE_REF oder einer davon abgeleiteten Klassen bezieht, liefert Type die ClassID des Objekts, auf das sich der Wrapper bezieht, d.h. Wrapper sind auch für Type "durchsichtig".
Wird im zweiten Parameter TRUE angegeben, erhält man den "wahren" Typ, also für CX_DESCRIPTIVE_REF / CX_OVERWRITING_REF den Typ dieser Klassen.

Ein Zugriffsausdruck kann alternativ auch vom Stack-Top genommen werden, sofern als Parameter 'STACK' angegeben wird. Dabei wird dieser identisch zu einem Zugriffsausdruck behandelt, der direkt als Parameter angegeben ist.