home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / TYPINFO.INT < prev    next >
Text File  |  1997-02-28  |  4KB  |  141 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1995,96 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit TypInfo;
  11.  
  12. interface
  13.  
  14. uses SysUtils;
  15.  
  16. type
  17.  
  18.   TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
  19.     tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkLWString,
  20.     tkVariant);
  21.   TTypeKinds = set of TTypeKind;
  22.  
  23.   TOrdType = (otSByte, otUByte, otSWord, otUWord, otSLong);
  24.  
  25.   TFloatType = (ftSingle, ftDouble, ftExtended, ftComp, ftCurr);
  26.  
  27.   TMethodKind = (mkProcedure, mkFunction);
  28.  
  29.   TParamFlags = set of (pfVar, pfConst, pfArray, pfAddress, pfReference);
  30.  
  31.   PTypeInfo = ^TTypeInfo;
  32.   TTypeInfo = record
  33.     Kind: TTypeKind;
  34.     Name: ShortString;
  35.    {TypeData: TTypeData}
  36.   end;
  37.  
  38.   PTypeData = ^TTypeData;
  39.   TTypeData = packed record
  40.     case TTypeKind of
  41.       tkUnknown, tkLString, tkLWString, tkVariant: ();
  42.       tkInteger, tkChar, tkEnumeration, tkSet, tkWChar: (
  43.         OrdType: TOrdType;
  44.         case TTypeKind of
  45.           tkInteger, tkChar, tkEnumeration, tkWChar: (
  46.             MinValue: Longint;
  47.             MaxValue: Longint;
  48.             case TTypeKind of
  49.               tkInteger, tkChar, tkWChar: ();
  50.               tkEnumeration: (
  51.                 BaseType: PTypeInfo;
  52.                 NameList: ShortString));
  53.           tkSet: (
  54.             CompType: PTypeInfo));
  55.       tkFloat: (
  56.         FloatType: TFloatType);
  57.       tkString: (
  58.         MaxLength: Byte);
  59.       tkClass: (
  60.         ClassType: TClass;
  61.         ParentInfo: PTypeInfo;
  62.         PropCount: SmallInt;
  63.         UnitName: ShortString
  64.        {PropData: TPropData});
  65.       tkMethod: (
  66.         MethodKind: TMethodKind;
  67.         ParamCount: Byte;
  68.         ParamList: array[0..1023] of Char
  69.        {ParamList: array[1..ParamCount] of
  70.           record
  71.             Flags: TParamFlags;
  72.             ParamName: ShortString;
  73.             TypeName: ShortString;
  74.           end;
  75.         ResultType: ShortString});
  76.   end;
  77.  
  78.   TPropData = packed record
  79.     PropCount: Word;
  80.     PropList: record end;
  81.    {PropList: array[1..PropCount] of TPropInfo}
  82.   end;
  83.  
  84.   PPropInfo = ^TPropInfo;
  85.   TPropInfo = packed record
  86.     PropType: PTypeInfo;
  87.     GetProc: Pointer;
  88.     SetProc: Pointer;
  89.     StoredProc: Pointer;
  90.     Index: Integer;
  91.     Default: Longint;
  92.     NameIndex: SmallInt;
  93.     Name: ShortString;
  94.   end;
  95.  
  96.   TPropInfoProc = procedure(PropInfo: PPropInfo) of object;
  97.  
  98.   PPropList = ^TPropList;
  99.   TPropList = array[0..16379] of PPropInfo;
  100.  
  101. const
  102.   tkAny = [Low(TTypeKind)..High(TTypeKind)];
  103.   tkMethods = [tkMethod];
  104.   tkProperties = tkAny - tkMethods - [tkUnknown];
  105.  
  106. { Property access routines }
  107.  
  108. function GetTypeData(TypeInfo: PTypeInfo): PTypeData;
  109.  
  110. function GetEnumName(TypeInfo: PTypeInfo; Value: Integer): string;
  111. function GetEnumValue(TypeInfo: PTypeInfo; const Name: string): Integer;
  112.  
  113. function GetPropInfo(TypeInfo: PTypeInfo; const PropName: string): PPropInfo;
  114. procedure GetPropInfos(TypeInfo: PTypeInfo; PropList: PPropList);
  115. function GetPropList(TypeInfo: PTypeInfo; TypeKinds: TTypeKinds;
  116.   PropList: PPropList): Integer;
  117.  
  118. function IsStoredProp(Instance: TObject; PropInfo: PPropInfo): Boolean;
  119.  
  120. function GetOrdProp(Instance: TObject; PropInfo: PPropInfo): Longint;
  121. procedure SetOrdProp(Instance: TObject; PropInfo: PPropInfo;
  122.   Value: Longint);
  123.  
  124. function GetStrProp(Instance: TObject; PropInfo: PPropInfo): string;
  125. procedure SetStrProp(Instance: TObject; PropInfo: PPropInfo;
  126.   const Value: string);
  127.  
  128. function GetFloatProp(Instance: TObject; PropInfo: PPropInfo): Extended;
  129. procedure SetFloatProp(Instance: TObject; PropInfo: PPropInfo;
  130.   Value: Extended);
  131.  
  132. function GetVariantProp(Instance: TObject; PropInfo: PPropInfo): Variant;
  133. procedure SetVariantProp(Instance: TObject; PropInfo: PPropInfo;
  134.   const Value: Variant);
  135.  
  136. function GetMethodProp(Instance: TObject; PropInfo: PPropInfo): TMethod;
  137. procedure SetMethodProp(Instance: TObject; PropInfo: PPropInfo;
  138.   const Value: TMethod);
  139.  
  140. implementation
  141.