enum TTypeKind{
tkUnknown, //Identifies an unknown type that has RTTI.
tkInteger, //Identifies an ordinal type.
tkChar, //Identifies a single-byte character.
tkEnumeration, //Identifies an enumeration type.
tkFloat, //Identifies a floating-point type.
tkString, //Identifies a short string type.
tkSet, //Identifies a set type.
tkClass, //Identifies a class type.
tkMethod, //Identifies a class method type.
tkWChar, //Identifies a 2-byte (wide) character type.
tkLString, //Identifies an AnsiString type.
tkWString, //Identifies a WideString type.
tkVariant, //Identifies a Variant type.
tkArray, //Identifies a static array type.
tkRecord, //Identifies a record type.
tkInterface, //Identifies an interface type.
tkInt64, //Identifies the Int64/UInt64 types.
tkDynArray, //Identifies a dynamic array type.
tkUString, //Identifies a UnicodeString type.
tkClassRef, //Identifies a metaclass type.
tkPointer, //Identifies a pointer type.
tkProcedure, //Identifies a procedural type.
};
TTypeData = packed record
case TTypeKind of
tkUnknown, tkLString, tkWString, tkVariant: ();
tkInteger, tkChar, tkEnumeration, tkSet, tkWChar: (
OrdType: TOrdType;
case TTypeKind of
tkInteger, tkChar, tkEnumeration, tkWChar: (
MinValue: Longint;
MaxValue: Longint;
case TTypeKind of
tkInteger, tkChar, tkWChar: ();
tkEnumeration: (
BaseType: PPTypeInfo;
NameList: ShortStringBase;
EnumUnitName: ShortStringBase));
tkSet: (
CompType: PPTypeInfo));
tkFloat: (
FloatType: TFloatType);
tkString: (
MaxLength: Byte);
tkClass: (
ClassType: TClassVFunTable;
ParentInfo: PPTypeInfo;
PropCount: SmallInt;
UnitName: ShortStringBase;
{PropData: TPropData});
tkMethod: (
MethodKind: TMethodKind;
ParamCount: Byte;
ParamList: array[0..1023] of Char
{ParamList: array[1..ParamCount] of
record
Flags: TParamFlags;
ParamName: ShortString;
TypeName: ShortString;
end;
ResultType: ShortString});
tkInterface: (
IntfParent : PPTypeInfo; { ancestor }
IntfFlags : TIntfFlagsBase;
Guid : TGUID;
IntfUnit : ShortStringBase;
{PropData: TPropData});
tkInt64: (
MinInt64Value, MaxInt64Value: Int64);
tkDynArray: (
elSize: Longint;
elType: PPTypeInfo; // nil if type does not require cleanup
varType: Integer; // Ole Automation varType equivalent
elType2: PPTypeInfo; // independent of cleanup
DynUnitName: ShortStringBase);
end;