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; |