TIfVariant

Unit: ifs_var.pas
TIfVariant is used to store all types of variables in the script engine.

Declaration:
PIfVariant = ^TIfVariant;
TIFVariant = record
   VType: PTypeRec;
   Flags: Byte; {Readonly(Const) = 1}
   case Word of
     CSV_UByte: (CV_UByte: Byte);
     CSV_SByte: (CV_SByte: ShortInt);
     CSV_Char: (CV_Char: Char);
     CSV_UInt16: (CV_UInt16: Word);
     CSV_SInt16: (CV_SInt16: {$IFDEF I32}SmallInt{$ELSE}Integer{$ENDIF});
     CSV_UInt32: (CV_UInt32: {$IFDEF I32}Cardinal{$ELSE}LongInt{$ENDIF});
     CSV_SInt32: (CV_SInt32: LongInt);
     CSV_String: (CV_Str: string);
     CSV_Real: (CV_Real: Real);
     CSV_Single: (CV_Single: Single);
     CSV_Double: (CV_Double: Double);
     CSV_Extended: (CV_Extended: Extended);
     CSV_Comp: (CV_Comp: Comp);
     CSV_Bool: (CV_Bool: Boolean);
     CSV_Var: (CV_Var: Pointer);
     CSV_Array: (CV_ArrItems: TifList);
     CSV_Record: (CV_RecItems: TIfList);
     CSV_Class: (CV_Class: PCreatedClass);
     CSV_Internal: (Cv_Int1,CV_Int2: Pointer);
     CSV_ClassRef: (Cv_ClassRef: PTypeRec);
     CSV_Property: (CV_Self, Cv_PropRead, CV_PropWrite: Pointer; CV_PropFlags: Word);
     CSV_ProcVariable: (Cv_Proc: pointer; Cv_ProcSelf: PCreatedClass);
     CSV_Special: (CV_Spec: Byte { 0 = nil pointer });
     CSV_ExternalObject: (CV_ExternalObject: Pointer {PCreatedCustomObject});
     CSV_ExternalObjectProperty: (CV_ExtObj: Pointer; CV_PropertyNo: Longint);
     CSV_Variant: (CV_Variant: PIfVariant); // always created!
end;