BooleanIdents: array[Boolean] of String = ('False', 'True'); DotSep: String = '.'; |
ptField = 0; ptStatic = 1; ptVirtual = 2; ptConst = 3; |
tkAny = [Low(TTypeKind)..High(TTypeKind)]; tkMethods = [tkMethod]; tkProperties = tkAny-tkMethods-[tkUnknown]; |
PShortString =^ShortString; PByte =^Byte; PWord =^Word; PLongint =^Longint; PBoolean =^Boolean; PSingle =^Single; PDouble =^Double; PExtended =^Extended; PComp =^Comp; PFixed16 =^Fixed16; Variant = Pointer; |
The TTypeKind determines the type of a property:
TTypeKind = (tkUnknown,tkInteger,tkChar,tkEnumeration, tkFloat,tkSet,tkMethod,tkSString,tkLString,tkAString, tkWString,tkVariant,tkArray,tkRecord,tkInterface, tkClass,tkObject,tkWChar,tkBool,tkInt64,tkQWord, tkDynArray,tkInterfaceRaw); tkString = tkSString; |
If the property is and ordinal type, then TTOrdType determines the size and sign of the ordinal type:
TTOrdType = (otSByte,otUByte,otSWord,otUWord,otSLong,otULong); |
TFloatType = (ftSingle,ftDouble,ftExtended,ftComp,ftCurr, ftFixed16,ftFixed32); |
TMethodKind = (mkProcedure,mkFunction,mkConstructor,mkDestructor, mkClassProcedure, mkClassFunction); |
TParamFlags = set of (pfVar,pfConst,pfArray,pfAddress,pfReference,pfOut); |
TIntfFlags = set of (ifHasGuid,ifDispInterface,ifDispatch); |
TTypeKinds = set of TTypeKind; |
TTypeInfo = record Kind : TTypeKind; Name : ShortString; end; PTypeInfo = ^TTypeInfo; PPTypeInfo = ^PTypeInfo; |
PTypeData = ^TTypeData; TTypeData = packed record case TTypeKind of tkUnKnown,tkLString,tkWString,tkAString,tkVariant: (); tkInteger,tkChar,tkEnumeration,tkWChar: (OrdType : TTOrdType; case TTypeKind of tkInteger,tkChar,tkEnumeration,tkBool,tkWChar : ( MinValue,MaxValue : Longint; case TTypeKind of tkEnumeration: ( BaseType : PTypeInfo; NameList : ShortString ) ); tkSet: ( CompType : PTypeInfo ) ); tkFloat: ( FloatType : TFloatType ); tkSString: (MaxLength : Byte); tkClass: (ClassType : TClass; ParentInfo : PTypeInfo; PropCount : SmallInt; UnitName : ShortString ); tkMethod: (MethodKind : TMethodKind; ParamCount : Byte; ParamList : array[0..1023] of Char {in reality ParamList is a array[1..ParamCount] of: record Flags : TParamFlags; ParamName : ShortString; TypeName : ShortString; end; followed by ResultType : ShortString} ); tkInt64: (MinInt64Value, MaxInt64Value: Int64); tkQWord: (MinQWordValue, MaxQWordValue: QWord); tkInterface: (); end; |
The TPropData record is not used, but is provided for completeness and compatibility with Delphi.
TPropData = packed record PropCount : Word; PropList : record end; end; |
PPropInfo = ^TPropInfo; TPropInfo = packed record PropType : PTypeInfo; GetProc : Pointer; SetProc : Pointer; StoredProc : Pointer; Index : Integer; Default : Longint; NameIndex : SmallInt; PropProcs : Byte; Name : ShortString; end; |
TProcInfoProc = procedure(PropInfo : PPropInfo) of object; |
PPropList = ^TPropList; TPropList = array[0..65535] of PPropInfo; |