@@RuntimeTypeInformation.Classoperatorhooking
<GROUP RuntimeTypeInformation>
<TITLE Class operator hooking>
<TOPICORDER 100>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.Conversions
<GROUP RuntimeTypeInformation>
<TITLE Conversions>
<TOPICORDER 200>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIgeneration
<GROUP RuntimeTypeInformation>
<TITLE RTTI generation>
<TOPICORDER 300>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval
<GROUP RuntimeTypeInformation>
<TITLE RTTI retrieval>
<TOPICORDER 400>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclBaseInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclBaseInfo>
<TOPICORDER 100>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclClassTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclClassTypeInfo>
<TOPICORDER 200>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclClassTypeInfo.IJclPropInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclClassTypeInfo>
<TITLE IJclPropInfo>
<TOPICORDER 100>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclDynArrayTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclDynArrayTypeInfo>
<TOPICORDER 300>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclEnumerationTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclEnumerationTypeInfo>
<TOPICORDER 400>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclEventTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclEventTypeInfo>
<TOPICORDER 500>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclEventTypeInfo.IJclEventParamInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclEventTypeInfo>
<TITLE IJclEventParamInfo>
<TOPICORDER 100>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclFloatTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclFloatTypeInfo>
<TOPICORDER 600>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclInt64TypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclInt64TypeInfo>
<TOPICORDER 700>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclInterfaceTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclInterfaceTypeInfo>
<TOPICORDER 800>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclOrdinalRangeTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclOrdinalRangeTypeInfo>
<TOPICORDER 900>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclOrdinalTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclOrdinalTypeInfo>
<TOPICORDER 1000>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclSetTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclSetTypeInfo>
<TOPICORDER 1100>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclStringTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclStringTypeInfo>
<TOPICORDER 1200>
--------------------------------------------------------------------------------
@@RuntimeTypeInformation.RTTIretrieval.IJclTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
<TITLE IJclTypeInfo>
<TOPICORDER 1300>
--------------------------------------------------------------------------------
@@JclSetToList
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a set to a list of enumeration values.
Description:
  JclSetToList converts a set to a list of enumeration values. Additionally
  the set value is returned as a string optionally surrounded by brackets and
  optionally using ranges if adjacent values are set.
Parameters:
  TypeInfo - RTTI of the set as returned by System.TypeInfo(set type).
  Value - Set value.
  WantBrackets - Flag to surround the result with brackets ('[' and ']'). When set to True, brackets will be present in the resulting string but not in the list.
  WantRanges - Flag to use range specifiers for adjacent values. When set to True adjacent values will be specified as 'First value .. Last value'. Ranges will be used in both the list as well as the resulting string.
  Strings - TStrings decendant to receive a list of values. Caller is responsible of creating/destroying the list. The list is not cleared on entry to JclSetToList.
Result:
  The string will be the concatenation of all added values in the Strings parameter,
  optionally surrounded by '['and ']' depending on the value of WantBrackets.
Donator:
  Theo Bebekis
--------------------------------------------------------------------------------
@@JclSetToStr
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a set to a string of enumeration values.
Description:
  JclSetToStr converts a set to a string representing the set, optionally
  surrounded by brackets and optionally using ranges if adjacent values are set.
  JclSetToStr uses JclSetToList to do the conversion.
Parameters:
  TypeInfo - RTTI of the set as returned by System.TypeInfo(set type).
  Value - Set value.
  WantBrackets - Flag to surround the result with brackets ('[' and ']'). When set to True, brackets will be present in the resulting string but not in the list.
  WantRanges - Flag to use range specifiers for adjacent values. When set to True adjacent values will be specified as 'First value .. Last value'.
Result:
  The string will be the concatenation of all added values in the Strings parameter,
  optionally surrounded by '['and ']' depending on the value of WantBrackets.
Donator:
  Theo Bebekis
--------------------------------------------------------------------------------
@@JclStrToSet
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a string to a set value.
Description:
  JclStrToSet converts a string to a set value. The string may or may not contain
  brackets ('[' and ']') and/or ranges ('First value .. Last value').
  Value/ranges must be seperated by a comma (','). If the string contains illegal
  values an exception is raised.
Parameters:
  TypeInfo - RTTI of the set as returned by System.TypeInfo(set type).
  SetVar - Set value.
  Value - String representing a set value.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclIntToSet
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts an integer value to a set.
Description:
  JclIntToSet converts an integer to a set value. Each bit in the integer value
  represents a value in the set. Note that the set variable in memory might be
  shifted up to 7 bits left. The actual number of bits shifted is equal to the
  ordinal of the first value modulo 8
Parameters:
  TypeInfo - RTTI of the set as returned by System.TypeInfo(set type).
  SetVar - Set value.
  Value - Integer representing a set value.
Donator:
  Theo Bebekis
--------------------------------------------------------------------------------
@@JclSetToInt
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a set value to an integer.
Description:
  JclSetToInt converts a set value to an integer. Each bit in the integer value
  represents a value in the set. Note that the set variable in memory might be
  shifted up to 7 bits left. The actual number of bits shifted is equal to the
  ordinal of the first value modulo 8
Parameters:
  TypeInfo - RTTI of the set as returned by System.TypeInfo(set type).
  SetVar - Set value.
Result:
  The return value is an Integer representing the set.
Donator:
  Theo Bebekis
--------------------------------------------------------------------------------
@@JclGUIDToString
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a GUID to a string.
Description:
  JclGUIDToString converts a GUID to a string. Note that the ComObj unit also has
  a GUIDToString function but it requires the ole.dll to do the conversion.
Parameters:
  GUID - GUID to convert to a string.
Result:
  A string representing the GUID.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclStringToGUID
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a string to a GUID.
Description:
  JclStringToGUID converts a string to a GUID. Note that the ComObj unit also has
  a StringToGUID function but it requires the ole.dll to do the conversion.
Parameters:
  S - String representing a GUID.
Result:
  The GUID the string is representing.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclEnumValueToIdent
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts an enumeration value to it's identifier.
Description:
  JclEnumValueToIdent converts an enumeration value to it's identifier. JclEnumValueToIdent
  does exactly the same as GetEnumName but doesn't require an ordinal value. In
  addition JclEnumValueToIdent will do a range check on the value and return a
  "Value out of range" string if it's out of range.
Parameters:
  TypeInfo - RTTI of the enumeration as returned by System.TypeInfo(enum type), JclGenerateEnum* or JclGenerateSubRange function.
  Value - Enumeration value.
Result:
  The identifier name of the value if the value is in range. If it's out of range
  the resulting string will contain "Value out of range (ordinal=Ord(Value))."
Donator:
  Theo Bebekis
--------------------------------------------------------------------------------
@@JclStrToTypedInt
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a string to an integer.
Description:
  JclStrToTypedInt converts a string to an integer. Besides the normal StrToInt,
  JclStrToTypedInt will first check if a conversion function for the integer type
  exists (ie. if RegisterIntegerConsts is called for the type). If such a function
  exists the string may also contain identifiers. An example of a typed Integer is
  TCursor.
Parameters:
  Value - Value to convert
  TypeInfo - Pointer to the RTTI for the integer type. This pointer can be obtained through a call to System.TypeInfo(type) or JclGenerateSubRange.
Result:
  The Integer value the string represents.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclTypedIntToStr
<GROUP RuntimeTypeInformation.Conversions>
Summary:
  Converts a Integer to a string.
Description:
  JclTypedIntToStr converts an integer to a string. Besides the normal IntToStr,
  JclTypedIntToStr will first check if a conversion function for the Integer type
  exists (ie. if RegisterIntegerConsts is called for the type). If such a function
  exists the resulting string may contain an identifier instead of a number. An
  example of a typed Integer is TCursor.
Parameters:
  Value - Value to convert
  TypeInfo - Pointer to the RTTI for the integer type. This pointer can be obtained through a call to System.TypeInfo(type) or JclGenerateSubRange.
Result:
  A string representing the given value.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclGenerateSetType
<GROUP RuntimeTypeInformation.RTTIgeneration>
Summary:
  Generates the RTTI structure for a new set.
Description:
  JclGenerateSetType generates the RTTI structure for a new set type.
Parameters:
  BaseType - RTTI of the ordinal type (as returned by System.TypeInfo(ordinal type), JclGenerateEnum* or JclGenerateSubRange).
  TypeName - Name of the newly generated RTTI.
Result:
  The return value is a pointer to the RTTI info.
Notes:
  All generated types are stored in a list and get freed on finalization of the JclRTTI unit. Optionally you can use RemoveTypeInfo to remove a specific type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclGenerateEnumType
<GROUP RuntimeTypeInformation.RTTIgeneration>
Summary:
  Generates the RTTI structure for a new enumeration base type.
Description:
  JclGenerateEnumType generates the RTTI structure for a new enumeration type.
Parameters:
  TypeName - Name of the newly generated RTTI.
  Literals - Array of literals. Opposed to the Delphi syntax, literals can contain any ASCII character. Literals can be a maximum of 256 characters long.
Result:
  The return value is a pointer to the RTTI info.
Notes:
  All generated types are stored in a list and get freed on finalization of the JclRTTI unit. Optionally you can use RemoveTypeInfo to remove a specific type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclGenerateEnumTypeBasedOn
<GROUP RuntimeTypeInformation.RTTIgeneration>
Summary:
  Generates the RTTI structure for a new enumeration base type based on an existing enumeration.
Description:
  JclGenerateEnumTypeBasedOn generates the RTTI structure for a new enumeration type,
  based on an existing enumeration.
Parameters:
  TypeName - Name of the newly generated RTTI.
  BaseType - Pointer to RTTI of enumeration type to base the new type on. The pointer can be obtained from a call to System.TypeInfo(ordinal type), JclGenerateEnum* or JclGenerateSubRange.
  PrefixCut - Number of characters to skip from the left. Additionally this value can be set to PREFIX_CUT_LOWERCASE (skip all leading lowercase characters) or PREFIX_CUT_EQUAL (skip all common leading characters).
Result:
  The return value is a pointer to the RTTI info.
Notes:
  All generated types are stored in a list and get freed on finalization of the JclRTTI unit. Optionally you can use RemoveTypeInfo to remove a specific type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclGenerateSubRange
<GROUP RuntimeTypeInformation.RTTIgeneration>
Summary:
  Generates the RTTI structure for a new sub range type.
Description:
  JclGenerateSubRange generates the RTTI structure for a new sub range type.
Parameters:
  BaseType - Pointer to RTTI of ordinal type to base the new type on. The pointer can be obtained from a call to System.TypeInfo(ordinal type), JclGenerateEnum* or JclGenerateSubRange.
  TypeName - Name of the newly generated RTTI.
  MinValue - Minium value for the sub range.
  MaxValue - Maximum value for the sub range.
Result:
  The return value is a pointer to the RTTI info.
Notes:
  All generated types are stored in a list and get freed on finalization of the JclRTTI unit. Optionally you can use RemoveTypeInfo to remove a specific type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@RemoveTypeInfo
<GROUP RuntimeTypeInformation.RTTIgeneration>
Summary:
  Removes a generated RTTI structure.
Description:
  RemoveTypeInfo removes a user generated RTTI structure.
Parameters:
  TypeInfo - Pointer to the user generated RTTI as returned by JclGenerateEnumType, JclGenerateEnumTypeBasedOn or JclGenerateSubRange.
Notes:
  All generated types are stored in a list and get freed on finalization of the JclRTTI unit. Optionally you can use RemoveTypeInfo to remove a specific type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclHookIs
<GROUP RuntimeTypeInformation.Classoperatorhooking>
Summary:
  Hooks the is/as class operators.
Description:
  JclHookIs hooks the is and as class operators. The as operator
  will be hooked to a function that uses the is operator to check the valid
  cast. If it's valid the object is simply returned, otherwise the normal exception
  will be raised ('Invalid cast').
  The is operator is hooked to the specified function. JclRTTI provides two
  functions: JclIsClass and JclIsClassByName.
  The first is an exact copy of the function found in the system unit, and checks
  the class based on RTTI (or rather VMT) pointers. The second checks the class
  based on it's name.
Parameters:
  IsProc - Function to use as the is operator.
Result:
  If the hook was successfully set True will be returned, False otherwise.
Notes:
  This procedure changes the executable code (with the risk of completly destroying your application).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclIsHooked
<GROUP RuntimeTypeInformation.Classoperatorhooking>
Summary:
  Checks if the class operators are hooked.
Description:
  JclIsHooked checks if the class operators are hooked.
Result:
  If the class operators are hooked True will be returned, False otherwise.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclUnhookIs
<GROUP RuntimeTypeInformation.Classoperatorhooking>
Summary:
  Unhooks the is/as class operators.
Description:
  JclUnhookIs unhooks the is and as class operators.
Result:
  If the class operators were hooked and could be unhooked successfully True will
  be returned, False othwerwise.
Notes:
  This procedure changes the executable code (with the risk of completly destroying your application).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclIsClass
<GROUP RuntimeTypeInformation.Classoperatorhooking>
Summary:
  Is class operator replacement.
Description:
  JclIsClass is an is class operator replacement. This implementation is
  an exact copy of the one in the system.pas unit.
  JclIsClass is primarily intended to be used by the JclIsHook function. Because
  JclIsClass is an exact copy of the version in system.pas it's probably not very
  usefull to hook the is operator to an exact copy. It was used during
  testing.
Result:
  If AnObj's class is AClass or inherits from AClass the function returns True,
  otherwise it returns False.
Donator:
  Borland/Codegear/Embarcadero
--------------------------------------------------------------------------------
@@JclIsClassByName
<GROUP RuntimeTypeInformation.Classoperatorhooking>
Summary:
  Is class operator replacement.
Description:
  JclIsClassByName is an is class operator replacement. This implementation
  checks the class by it's name.
  JclIsClassByName checks the name of AnObj's class with the name of AClass. If
  they're not equal (case insensitive), the parent tree is checked. If an equal
  name is found, the entire path to the root is checked as well. Only if the path
  exactly matches AnObj is AClass is assumed to be True.
Result:
  If AnObj's class is AClass or inherits from AClass the function returns True,
  otherwise it returns False.
Notes:
  Although the names of all classes upto the root matches, it's not certain that AnObj actually is of AClass. To increase certainty, one should also check the unit name where the class is declared and possibly also it's InstanceSize.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@JclTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval>
Summary:
  Retrieve RTTI information.
Description:
  JclTypeInfo retrieves and interface to RTTI information given a pointer to the
  type info structure. ATypeInfo can be obtained through a call to
  System.TypeInfo(type identifier) or through one of the JclGenerate*
  functions.
Result:
  An interface reference to the RTTI info for the specified type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclBaseInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclBaseInfo>
Summary:
  Basic type info interface.
Description:
  IJclBaseInfo is the base interface of type information retrieval. It provides two
  method for outputting the RTTI
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclBaseInfo.WriteTo
Summary:
  Write RTTI information to the info writer.
Description:
  WriteTo writes the RTTI information to the info writer.
Parameters:
  Dest - Info writer object to write to.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclBaseInfo.DeclarationTo
Summary:
  Writes the Pascal declaration of the type to the info writer.
Description:
  DeclarationTo writes the Pascal declaration to the info writer. Note that the
  declaration for some types is not exact, more specifically the declarations for
  interface and class types. That is because not all information needed is in the
  RTTI.
Parameters:
  Dest - Info writer object to write to.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclTypeInfo>
Summary:
  Generic RTTI interface.
Description:
  IJclTypeInfo is the generic interface of RTTI. It provides for methods and
  properties to query the type name, type kind, pointer to the type info and a
  pointer to the type data.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.GetName
Summary:
  Retrieves the name of the type.
Description:
  GetName retrieves the name of the type. GetName is the read specifier for the
  Name property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.GetTypeData
Summary:
  Retrieves a pointer to the type data.
Description:
  GetTypeData retrieves a pointer to the type data of the type. GetTypeData is the
  read specifier for the TypeData property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.GetTypeInfo
Summary:
  Retrieves a pointer to the type info.
Description:
  GetTypeInfo retrieves a pointer to the type info of the type. GetTypeInfo is the
  read specifier for the TypeInfo property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.GetTypeKind
Summary:
  Retrieves the type kind.
Description:
  GetTypeKind retrieves the type kind of the type. GetTypeKind is the read
  specifier for the TypeKind property. For more information please refer to the
  Delphi help on TTypeKind.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.Name
Summary:
  Retrieves the name of the type.
Description:
  Name retrieves the name of the type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.TypeData
Summary:
  Retrieves a pointer to the type data.
Description:
  TypeData retrieves a pointer to the type data of the type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.TypeInfo
Summary:
  Retrieves a pointer to the type info.
Description:
  TypeInfo retrieves a pointer to the type info of the type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclTypeInfo.TypeKind
Summary:
  Retrieves the type kind.
Description:
  TypeKind retrieves the type kind of the type. For more information please refer
  to the Delphi help on TTypeKind.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclOrdinalTypeInfo>
Summary:
  Ordinal RTTI interface.
Description:
  IJclOrdinalTypeInfo is the base interface for ordinal types. It provides
  methods and properties to query the ordinal type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalTypeInfo.GetOrdinalType
Summary:
  Retrieves the ordinal type.
Description:
  GetOrdinalType retrieves the ordinal type. GetOrdinalType is the read specifier
  for the OrdinalType property. See Delphi's help on TOrdType.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalTypeInfo.OrdinalType
Summary:
  Retrieves the ordinal type.
Description:
  OrdinalType retrieves the ordinal type. See Delphi's help on TOrdType.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalRangeTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclOrdinalRangeTypeInfo>
Summary:
  Ordinal range RTTI interface.
Description:
  IJclOrdinalRangeTypeInfo is the base interface for ranged ordinal types. It
  provides methods and properties to query the minimum and maximum values.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalRangeTypeInfo.GetMinValue
Summary:
  Retrieves the minimum value.
Description:
  GetMinValue retrieves the minimum value for the ordinal type. GetMinValue is the
  read specifier for the MinValue property.
Result:
  The minimum value of the range.
Notes:
  Although Int64 is not an ordinal type, it is used in this interface for the min and max values because it allows for all possible ranges (signed or unsigned 32-bit Integer values). This is not the case for Delphi 4 because Delphi 4 doesn't indicate that a type is an unsigned long.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalRangeTypeInfo.GetMaxValue
Summary:
  Retrieves the maximum value.
Description:
  GetMaxValue retrieves the maximum value for the ordinal type. GetMaxValue is the
  read specifier for the MaxValue property.
Result:
  The maximum value of the range.
Notes:
  Although Int64 is not an ordinal type, it is used in this interface for the min and max values because it allows for all possible ranges (signed or unsigned 32-bit Integer values). This is not the case for Delphi 4 because Delphi 4 doesn't indicate that a type is an unsigned long.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalRangeTypeInfo.MinValue
Summary:
  Retrieves the minimum value.
Description:
  MinValue retrieves the minimum value for the ordinal type.
Notes:
  Although Int64 is not an ordinal type, it is used in this interface for the min and max values because it allows for all possible ranges (signed or unsigned 32-bit Integer values). This is not the case for Delphi 4 because Delphi 4 doesn't indicate that a type is an unsigned long.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclOrdinalRangeTypeInfo.MaxValue
Summary:
  Retrieves the maximum value.
Description:
  MaxValue retrieves the maximum value for the ordinal type.
Notes:
  Although Int64 is not an ordinal type, it is used in this interface for the min and max values because it allows for all possible ranges (signed or unsigned 32-bit Integer values). This is not the case for Delphi 4 because Delphi 4 doesn't indicate that a type is an unsigned long.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclEnumerationTypeInfo>
Summary:
  Enumeration RTTI interface.
Description:
  IJclEnumerationTypeInfo is the interface for enumeration types. It provides
  methods and properties to query the base type, the name list and locating a name.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.GetBaseType
Summary:
  Retrieves an interface to the base type.
Description:
  GetBaseType retrieves an interface to the base type for the enumeration. If the
  enumeration is the base type an interface to the object is returned.
  
  Under normal circumstances an enumeration can have at most 1 base type (a sub
  range is always the sub range of the base type, never a sub range of a sub range).
  GetBaseType is the read specifier for the BaseType property.
Result:
  An interface pointer to the base type for this enumeration. If this enumeration
  is the base type, a pointer to the same object is returned.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.GetNames
Summary:
  Retrieves a name of the enumeration.
Description:
  GetNames retrieves a name given an ordinal value. No range check is performed and
  it is possible to retrieve names of ordinals that are not part of the sub range.
  GetNames is the read specifier for the Names property.
Parameters:
  I - Ordinal value to get the name of.
Result:
  Enumeration name of the given ordinal.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.GetUnitName
Summary:
  Retrieves the unit name of the enumeration.
Description:
  GetUnitName retrieves the unit name where the type is declared. GetUnitName is
  the read specifier for the UnitName property.
Result:
  Name of the unit where the type is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.IndexOfName
Summary:
  Retrieves a the inbdex of a name of the enumeration.
Description:
  IndexOfName retrieves the index for a given name. If the names does not exist
  within the sub range -1 is returned.
Parameters:
  Name - Enumeration name to get the ordinal for.
Result:
  If the enumeration name exists within the sub range, it's ordinal value is returned,
  otherwise -1 is returned.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.BaseType
Summary:
  An interface to the base type.
Description:
  BaseType holds a reference to an interface to the base type for the enumeration.
  If the enumeration is the base type an interface to the object is returned.
  
  Under normal circumstances an enumeration can have at most 1 base type (a sub
  range is always the sub range of the base type, never a sub range of a sub range).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.Names
Summary:
  A name of an enumeration value.
Description:
  Names retrieves a name given an ordinal value. No range check is performed and
  it is possible to retrieve names of ordinals that are not part of the sub range.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEnumerationTypeInfo.UnitName
Summary:
  The unit name of the enumeration.
Description:
  UnitName holds the unit name where the type is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclSetTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclSetTypeInfo>
Summary:
  Set RTTI interface.
Description:
  IJclSetTypeInfo is the interface for set types. It provides methods and properties
  to query the base type and convert values from/to a string list.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclSetTypeInfo.GetBaseType
Summary:
  Retrieves an interface to the base type.
Description:
  GetBaseType retrieves an interface to the base type for the set. GetBaseType is
  the read specifier for the BaseType property.
  
  Background:
  When the compiler finds a set declaration similar to TMySet = set of
  (<valuelist>) an implicit enumeration type is generated for that set. The
  distinction between a set based on a declared enumeration or an implicit enumeration
  can be made by examining the name of the base type. If it starts with a dot
  (".") it's an implicit type generated by the compiler.
Result:
  An interface pointer to the base type for this set.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclSetTypeInfo.GetAsList
Summary:
  Convert a set value to a list of strings.
Description:
  Convert a set value to a list of members. Optionally adjacent members in the
  set are specified as a range instead of separate strings.
Parameters:
  Value - Set variable to convert to a list of member values.
  WantRanges - Flag to determine if ranges are to be used for adjacent members.
  Strings - TStrings descendant to retrieve the list of values/ranges set in Value. Caller is responsible for instantiating, clearing and freeing the list object.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclSetTypeInfo.SetAsList
Summary:
  Convert a a list of strings to a set value.
Description:
  Convert a list of string values to a set value. Strings can be any valid set member or
  ranges of set members.
Parameters:
  Value - Set variable to retrieve the the set value.
  Strings - TStrings descendant holding the list of members/ranges. Caller is responsible for instantiating and freeing the list object.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclSetTypeInfo.BaseType
Summary:
  An interface to the base type.
Description:
  BaseType is an interface to the base type for the set.
  
  Background:
  When the compiler finds a set declaration similar to TMySet = set of
  (<valuelist>) an implicit enumeration type is generated for that set. The
  distinction between a set based on a declared enumeration or an implicit enumeration
  can be made by examining the name of the base type. If it starts with a dot
  (".") it's an implicit type generated by the compiler.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclFloatTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclFloatTypeInfo>
Summary:
  Float RTTI interface.
Description:
  IJclFloatTypeInfo is the interface for float types. It provides
  methods and properties to query the float type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclFloatTypeInfo.GetFloatType
Summary:
  Retrieve float type.
Description:
  GetFloatType retrieves the float type. See TFloatType in the TypInfo unit for
  more information. GetFloatType is the read specifier for the FloatType property
Result:
  The float type of this float info object.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclFloatTypeInfo.FloatType
Summary:
  The float type.
Description:
  FloatType holds the float type. See TFloatType in the TypInfo unit for
  more information.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclStringTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclStringTypeInfo>
Summary:
  Short string RTTI interface.
Description:
  IJclStringTypeInfo is the interface for short string types. It provides
  methods and properties to query the maximum string length.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclStringTypeInfo.GetMaxLength
Summary:
  Retrieve the maximum length.
Description:
  GetMaxLength retrieves the maximum string length. GetMaxLength is the read
  specifier for the MaxLength property
Result:
  The float type of this float info object.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclStringTypeInfo.MaxLength
Summary:
  The maximum string length.
Description:
  MaxLength holds the maximum string length for this ShortString type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclPropSpecKind
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclClassTypeInfo>
Summary:
  Property access specifier kind.
Description:
  TJclPropSpecKind is the access specifier kind for the read, write or stored
  specifier of a given property.
Donator:
  Marcel Bestebroer
@@TJclPropSpecKind.pskNone
  Specifier does not exist.
@@TJclPropSpecKind.pskStaticMethod
  Specifier uses a static method. The specifier value holds the address of the method.
@@TJclPropSpecKind.pskVirtualMethod
  Specifier uses a virtual method. The specifier value holds the VMT slot of the method.
@@TJclPropSpecKind.pskField
  Specifier uses a field. The specifier value holds the offset (relative to the start of the instance) to the field.
@@TJclPropSpecKind.pskConstant
  Specifier uses a constant. The specifier value holds the constant. Note that constants are used for the stored specifier only.
--------------------------------------------------------------------------------
@@IJclPropInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclClassTypeInfo.IJclPropInfo>
Summary:
  Class RTTI property interface.
Description:
  IJclPropInfo is the interface for properties of class types. It provides
  methods and properties to query the read, write and stored specifier values
  types, property name and index, default value and index specifier.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclClassTypeInfo>
Summary:
  Class RTTI interface.
Description:
  IJclClassTypeInfo is the interface for class types. It provides
  methods and properties to query the class reference, parent info, property info
  and unit of declaration.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.GetClassRef
Summary:
  Retrieve a class reference.
Description:
  GetClassRef retrieves the class reference to the class. GetClassRef is the read
  specifier for the ClassRef property.
Result:
  A class reference to the class.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.GetParent
Summary:
  Retrieve an interface to the RTTI of the parent class.
Description:
  GetParent retrieves an interface to the RTTI of the parent class. If the class
  has no parent, GetParent will return nil. GetParent is the read specifier
  for the Parent property.
Result:
  If the class has a parent the function will return an interface to the RTTI of
  the parent, otherwise the function returns nil.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.GetTotalPropertyCount
Summary:
  Retrieve the number of published properties.
Description:
  GetTotalPropertyCount retrieves the number of published properties. This number
  includes all published properties of the parent tree. To find the number of
  properties declared by the class, query the PropertyCount property.
  GetTotalPropertyCount is the read specifier for the TotalPropertyCount property.
Result:
  The number of published properties declared by the class and it's ancestors.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.GetPropertyCount
Summary:
  Retrieve the number of published properties declared in this class.
Description:
  GetPropertyCount retrieves the number of properties published by this class. To
  find the number of published properties in this class and it's ancestors, query the
  TotalPropertyCount property. GetPropertyCount is the read specifier for the
  PropertyCount property.
Result:
  The number of published properties declared by the class.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.GetProperties
Summary:
  Retrieve an interface to the property.
Description:
  GetProperties retrieves an interface to the property at the given index. Valid
  index values run from 0 up to TotalPropertyCount-1. Up to PropertyCount are
  properties declared by this class. GetProperties is the read specifier for the
  Properties property.
Parameters:
  PropIdx - Index of property to retrieve.
Result:
  An interface to the requested property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.GetUnitName
Summary:
  Retrieve the unit name where the class is declared.
Description:
  GetUnitName retrieves the name of the unit where the class is declared.
  GetUnitName is the read specifier for the UnitName property.
Result:
  The name of the unit where the class is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.ClassRef
Summary:
  Class reference.
Description:
  ClassRef holds the class reference to the class.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.Parent
Summary:
  Retrieve an interface to the RTTI of the parent class.
Description:
  Parent holds an interface to the RTTI of the parent class. If the class has no
  parent, Parent will be nil.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.TotalPropertyCount
Summary:
  Number of published properties.
Description:
  TotalPropertyCount holds the number of published properties. This number
  includes all published properties of the ancestor tree. To find the number of
  properties declared by the class, query the PropertyCount property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.PropertyCount
Summary:
  Number of published properties declared in this class.
Description:
  PropertyCount holds the number of properties published by this class. To
  find the number of published properties in this class and it's ancestors, query
  the TotalPropertyCount property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.Properties
Summary:
  Array of interfaces to the properties.
Description:
  Properties is an array of interfaces to the properties. Valid index values run
  from 0 up to TotalPropertyCount-1. Up to PropertyCount-1 are properties declared
  by this class.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclClassTypeInfo.UnitName
Summary:
  Unit name where the class is declared.
Description:
  UnitName holds the name of the unit where the class is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclEventTypeInfo.IJclEventParamInfo>
Summary:
  Event RTTI parameter interface.
Description:
  IJclEventParamInfo is the interface for parameters of event types. It provides
  methods and properties to obtain parameter flags, name and type name for the
  parameter. Note that for event parameters the type name is stored, not a pointer
  to the RTTI and it's therefor impossible to get RTTI info for parameters.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.GetFlags
Summary:
  Retrieve parameter flags.
Description:
  GetFlags retrieves the parameter flags that show if a given parameter is specified
  using const, var or out and if the parameter is an array of
  the specified type. GetFlags is the read specifier for the Flags property.
Result:
  A set of parameter flags for this parameter.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.GetName
Summary:
  Retrieve parameter name.
Description:
  GetName retrieves the parameter name. GetName is the read specifier for the Name
  property.
Result:
  The parameter name.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.GetRecSize
Summary:
  Retrieve parameter RTTI record size.
Description:
  GetRecSize retrieves the parameter RTTI record size. GetRecSize is the read
  specifier for the RecSize property.
Result:
  The size of the record for this parameter in the RTTI structure.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.GetTypeName
Summary:
  Retrieve parameter type name.
Description:
  GetTypeName retrieves the parameter type name. For event parameters there's no
  RTTI pointer to the type, just the name. GetTypeName is the read specifier for
  the TypeName property.
Result:
  If it's a typed parameter the function will return the name of that type,
  otherwise an empty string is returned.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.GetParam
Summary:
  Retrieve pointer to the parameter record.
Description:
  GetParam retrieves the pointer to the parameter record. GetParam is the read
  specifier for the Param property.
Result:
  A pointer to the parameters' record in the RTTI structure.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.Flags
Summary:
  Parameter flags.
Description:
  Flags holds the parameter flags that show if a given parameter is specified
  using const, var or out and if the parameter is an array of
  the specified type.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.Name
Summary:
  Parameter name.
Description:
  Name holds the parameter name.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.RecSize
Summary:
  Parameter RTTI record size.
Description:
  RecSize holds the parameter RTTI record size.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.TypeName
Summary:
  Parameter type name.
Description:
  TypeName holds the parameter type name. For event parameters there's no
  RTTI pointer to the type, just the name.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventParamInfo.Param
Summary:
  Pointer to the parameter record.
Description:
  Param holds the pointer to the parameter record.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclEventTypeInfo>
Summary:
  Event RTTI interface.
Description:
  IJclEventTypeInfo is the interface for event types. It provides methods and
  properties to query the method type (function or procedure), parameter info and
  the result type name (for functions).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.GetMethodKind
Summary:
  Method kind.
Description:
  GetMethodKind retrieves the method type (either a procedure or a function).
  GetMethodKind is the read specifier of the MethodKind property.
Result:
  If the event is a procedure the function will return mkProcedure, otherwise
  mkFunction is returned.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.GetParameterCount
Summary:
  Retrieves the number of parameters.
Description:
  GetParameterCount retrieves the number of parameters declared. GetParameterCount
  is the read specifier of the ParameterCount property.
Result:
  The number of parameters declared in the event.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.GetParameters
Summary:
  Retrieves an interface to the parameter info.
Description:
  GetParameters retrieves an interface to parameter info. GetParameters is the
  read specifier of the Parameters property.
Parameters:
  ParamIdx - Index (0-based) of parameter to retrieve.
Result:
  An interface to the requested parameter.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.GetResultTypeName
Summary:
  Retrieves the result type name.
Description:
  GetResultTypeName retrieves the result type name. If the MethodKind = mkProcedure,
  GetResultTypeName will return an empty string. GetResultTypeName is the read
  specifier of the ResultTypeName property.
Result:
  If MethodKind = mkFunction teh function returns the name of result type, otherwise
  the function returns an empty string.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.MethodKind
Summary:
  Method kind.
Description:
  MethodKind holds the method type (either a procedure or a function).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.ParameterCount
Summary:
  Number of parameters.
Description:
  ParameterCount holds the number of parameters declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.Parameters
Summary:
  An array of interface's to the parameter info.
Description:
  Parameters is an array to parameter info interfaces. The index is 0-based.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclEventTypeInfo.ResultTypeName
Summary:
  Result type name.
Description:
  ResultTypeName holds the result type name. If the MethodKind = mkProcedure,
  ResultTypeName will be an empty string.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclInterfaceTypeInfo>
Summary:
  Interface RTTI interface.
Description:
  IJclInterfaceTypeInfo is the RTTI interface for interface types. It provides
  methods and properties to query the parent interface, the interface GUID,
  it's flags unit name of declaration and number of properties (Delphi 6 only).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.GetParent
Summary:
  Retrieve a reference to the parent interface.
Description:
  GetParent retrieves an interface to the parent interface of this type. If the
  interface has no parent nil is returned. GetParent is the read specifier of the
  Parent property.
Result:
  A reference to the parent interface RTTI. If the interface has no parent nil
  will be returned instead.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.GetFlags
Summary:
  Retrieve the interface flags.
Description:
  GetFlags retrieves the interface flags. There are three possible flags: 
    * ifHasGUID - Interface has a GUID
    * ifDispInterface - Interface is an dispinterface.
    * ifDispatch - Interface supports the IDispatch interface.
  GetFlags is the read specifier of the Flags property.
Result:
  A set of flags that apply to the interface.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.GetGUID
Summary:
  Retrieve the interface GUID.
Description:
  GetGUID retrieves the interface GUID. If the interface has no GUID the null GUID
  is returned. GetGUID is the read specifier of the GUID property.
Result:
  The GUID of the interface or the null GUID if the interface has no GUID.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.GetPropertyCount
Summary:
  Retrieve the number of properties in the interface.
Description:
  GetPropertyCount retrieves the number of properties declared in the interface.
  Although the number of properties is stored, there's no information on individual
  properties. GetPropertyCount is the read specifier of the PropertyCount property.
Result:
  The number of properties declared in the interface.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.GetUnitName
Summary:
  Retrieve the unit name of the interface.
Description:
  GetUnitName retrieves the unit name where the interface is declared. GetUnitName
  is the read specifier of the UnitName property.
Result:
  The unit name where the interface is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.Parent
Summary:
  A reference to the parent interface.
Description:
  Parent holds a reference to the parent interface of this type. If the interface
  has no parent, Parent holds nil.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.Flags
Summary:
  The interface flags.
Description:
  Flags hold the interface flags. There are three possible flags: 
    * ifHasGUID - Interface has a GUID.
    * ifDispInterface - Interface is an dispinterface.
    * ifDispatch - Interface supports the IDispatch interface.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.GUID
Summary:
  The interface GUID.
Description:
  GUID holds the interface GUID. If the interface has no GUID the property will
  hold the null GUID.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.UnitName
Summary:
  The unit name of the interface.
Description:
  UnitName holds the unit name where the interface is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInterfaceTypeInfo.PropertyCount
Summary:
  The number of properties in the interface.
Description:
  PropertyCount holds the number of properties declared in the interface.
  Although the number of properties is stored, there's no information on individual
  properties.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInt64TypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclInt64TypeInfo>
Summary:
  Int64 RTTI interface.
Description:
  IJclInt64TypeInfo is the interface for Int64 types. It provides methods and
  properties to query the minimum and maximum values.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInt64TypeInfo.GetMinValue
Summary:
  Retrieves the minimum value.
Description:
  GetMinValue retrieves the minimum value. GetMinValue is the read specifier for
  the MinValue property.
Result:
  The minimum value of the range.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInt64TypeInfo.GetMaxValue
Summary:
  Retrieves the maximum value.
Description:
  GetMaxValue retrieves the maximum value. GetMaxValue is the read specifier for
  the MaxValue property.
Result:
  The maximum value of the range.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInt64TypeInfo.MinValue
Summary:
  Retrieves the minimum value.
Description:
  MinValue retrieves the minimum value.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInt64TypeInfo.MaxValue
Summary:
  Retrieves the maximum value.
Description:
  MaxValue retrieves the maximum value.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo
<GROUP RuntimeTypeInformation.RTTIretrieval.IJclDynArrayTypeInfo>
Summary:
  Dynamic array RTTI interface.
Description:
  IJclDynArrayTypeInfo is the interface for dynamic array types. RTTI for dynamic
  arrays is available as of Delphi 6. The interface provides methods and
  properties to query the element size, it's type (both RTTI as well as varType),
  the unit name of it's declaration and if the elements require clean-up.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetElementSize
Summary:
  Retrieves the element size.
Description:
  GetElementSize retrieves the size of each element. GetElementSize is the read
  specifier for the ElementSize property.
Result:
  The size of each element.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetElementType
Summary:
  Retrieves the interface to the element RTTI.
Description:
  GetElementType retrieves a reference to the interface for the RTTI of the elements.
  Note that declarations as in TMyArray = array of record x: Integer;
  y: string; end do not generate RTTI for the elements.
  GetElementType is the read specifier for the ElementType property.
Result:
  A reference to the RTTI interface for the elements or nil if there's no RTTI on
  the elements.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetElementsNeedCleanup
Summary:
  Determines if elements need cleanup.
Description:
  GetElementsNeedCleanup determines if the elements require cleanup when elements
  are discarded. GetElementsNeedCleanup is the read specifier for the
  ElementsNeedCleanup property.
Result:
  If the elements of the array need cleanup the function returns True, otherwise it
  returns false.
Notes:
  The decision is made by examining the elType member of the type data. If it's not nil cleanup is required. For constructions that do not create RTTI for the elements this decision might be wrong (notably with record constructs containing long strings as in TMyArray = array of record x: Integer; y: string; end).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetVarType
Summary:
  Retrieves the OLE Automation varType equivalent.
Description:
  GetVarType retrieves the OLE Automation varType equivalent. GetVarType is the
  read specifier for the VarType property.
Result:
  The OLE Automation varType equivalent
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetUnitName
Summary:
  Retrieves the unit name of the dynamic array.
Description:
  GetUnitName retrieves the unit name where the type is declared. GetUnitName is
  the read specifier for the UnitName property.
Result:
  Name of the unit where the type is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetElementSize
Summary:
  The element size.
Description:
  ElementSize holds the size of each element.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.GetElementType
Summary:
  Retreives the interface to the element RTTI.
Description:
  ElementType holds a reference to the interface for the RTTI of the elements.
  Note that declarations as in TMyArray = array of record x: Integer;
  y: string; end do not generate RTTI for the elements.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.ElementsNeedCleanup
Summary:
  Elements cleanup flag.
Description:
  ElementsNeedCleanup is the element cleanup flag.
Notes:
  The decision is made by examining the elType member of the type data. If it's not nil cleanup is required. For constructions that do not create RTTI for the elements this decision might be wrong (notably with record constructs containing long strings as in TMyArray = array of record x: Integer; y: string; end).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.VarType
Summary:
  The OLE Automation varType equivalent.
Description:
  VarType holds the OLE Automation varType equivalent.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.UnitName
Summary:
  The unit name of the dynamic array.
Description:
  UnitName holds the unit name where the type is declared.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.ElementSize
Summary:
  Element size of an array item.
Description:
  ElementSize holds the element size of an array element.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclDynArrayTypeInfo.ElementType
Summary:
  IJclTypeInfo for an array element.
Description:
  ElementType holds a reference to the IJclTypeInfo for an element.
Notes:
  For some dynamic array constructions the RTTI info is not
  generated. For these constructions the ElementType returns nil.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.Default
Summary:
  Default property value.
Description:
  Default holds the default property value. If the property has
  no default value, $80000000 will be returned (as done by the
  Delphi compiler).
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetDefault
Summary:
  Retrieve default property value.
Description:
  GetDefault retrieves the property's default value. GetDefault
  is the read method for the Default property
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetIndex
Summary:
  Retrieves the index specifier value
Description:
  GetIndex retrieves the property's index value. GetIndex is
  the read method for the Index property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetName
Summary:
  Retrieve the property's name.
Description:
  GetName retrieves the name of the property. GetName is the
  read method for the Name property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetNameIndex
Summary:
  Retrieve the property's name/declaration index.
Description:
  GetNameIndex retrieves the property's declaration or name
  index. GetNameIndex is the read method for the NameIndex
  property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetPropType
Summary:
  Retrieve an RTTI interface for the property's type.
Description:
  GetPropType retrieves an interface to the RTTI for the
  property's type. GetPropType is the read method for the
  PropType property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetReader
Summary:
  Retrieves the raw reader pointer.
Description:
  GetReader retrieves the raw reader pointer. GetReader is the
  read method for the Reader property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetReaderType
Summary:
  Retrieves the read specifier type.
Description:
  GetReaderType retrieves the property's read specifier type.
  GetReaderType is the read method for the ReaderType property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetReaderValue
Summary:
  Retrieves the parsed read specifier value.
Description:
  GetReaderValue retrieves the parsed read specifier value.
  GetReaderValue is the read method for the ReaderValue
  property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetStoredProc
Summary:
  Retrieves the raw stored specifier value.
Description:
  GetStoredProc retrieves the raw stored specifier value.
  GetStoredProc is the read method for the StoredProc property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetStoredType
Summary:
  Retrieves the stored specifier type.
Description:
  GetStoredType retrieves the stored specifier type.
  GetStoredType is the read method for the StoredType property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetStoredValue
Summary:
  Retrieves the parsed store specifier value.
Description:
  GetStoredValue retrieves the parsed stored specifier value.
  GetStoredValue is the read method for the StoredValue
  property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetWriter
Summary:
  Retrieves the raw write specifier value.
Description:
  GetWriter retrieves the raw write specifier value. GetWriter
  is the read method for the Writer property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetWriterType
Summary:
  Determines the write specifier type.
Description:
  GetWriterType determines the write specifier type.
  GetWriterType is the read method for the WriterType property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.GetWriterValue
Summary:
  Retrieves the parsed write specifier value.
Description:
  GetWriteValue retrieves the parsed write specifier value.
  GetWriterValue is the read method for the WriterValue
  property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.HasDefault
Summary:
  Determines if the property has a default value.
Description:
  HasDefault checks if the property has a default value. A
  property has a default value if it's of an ordinal type and
  Default $80000000.
Visibility:
 Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.HasIndex
Summary:
  Determines if the property has an index specifier.
Description:
  HasIndex determines if the property has an index specifier.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.Index
Summary:
  Holds the Index specifier value.
Description:
  Index holds the index specifier value. If the property has no
  index specifier, this property holds $80000000 and HasIndex
  will be False.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.IsStored@TObject
Summary:
  Determines if the property is stored for a given instance.
Description:
  IsStored determines if the property is stored for the given
  instance. The instance must be specifier to resolve the cases
  where the stored specifier is a function and not a constant.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.Name
Summary:
  Holds the property's name
Description:
  Name holds the property's name.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.NameIndex
Summary:
  Holds the property's declarative index.
Description:
  NameIndex is the property index in the class declaration hierarchy.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.PropType
Summary:
  References the RTTI interface for the property.
Description:
  PropType holds a reference to the RTTI interface for the property.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.Reader
Summary:
  Raw read specifier value.
Description:
  Reader is the raw read specifier value. The meaning of this
  value depends on the value of the ReadType property. Use
  ReadValue to find out the interpreted value.
Visibility:
  Public
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.ReaderType
Summary:
  The read specifier type.
Description:
  ReaderType holds the type of read specifier. The specifier
  type determines how the Reader property should be interpreted.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.ReaderValue
Summary:
  Parsed read specifier value
Description:
  ReaderValue is the parsed read specifier value. Depending on
  ReaderType this value could be a pointer to a static method, a
  VMT slot index or a field offset.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.StoredProc
Summary:
  The raw stored specifier value.
Description:
  StoredProc holds the raw stored specifier value. Use
  StoredType and StoredValue to retrieve the parsed stored
  specifier value.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.StoredType
Summary:
  Type of stored specifier.
Description:
  StoredType holds the type of stored specifier. This
  determines how the StoredProc value should be interpreted.
  Use StoredValue to determine the parsed value for the stored
  specifier.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.StoredValue
Summary:
  Parsed stored specifier value.
Description:
  StoredValue holds the parsed value for the stored specifier.
  Depending on the value of the StoredType property, this value
  could be either a constant (ordinal of a boolean), a pointer
  to a static method, a VMT slot index or a field offset.
See also:
  IsStored
  StoredProc
  StoredValue
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.Writer
Summary:
  The raw write specifier value
Description:
  Writer holds the raw srite specifier value. How this value
  should be interpreted depends on the value of the WriterType
  property. You can also use WriterValue to retrieve a parsed
  value.
See also:
  Reader
  StoredProc
  WriterType
  WriterValue
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.WriterType
Summary:
  Type of write specifier.
Description:
  WriterType holds the type of the write specifier. WriterValue
  uses this value to determine how to parse the Writer property.
See also:
  ReaderType
  StoredType
  Writer
  WriterValue
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclPropInfo.WriterValue
Summary:
  Parsed write specifier value.
Description:
  WriterValue holds the parsed value of the write specifier.
  Depending on the value of WriterType this value can be either
  a pointer to a static method, a VMT slot index or a field
  offset.
See also:
  ReaderValue
  StoredValue
  Writer
  WriterType
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter
<GROUP RuntimeTypeInformation.RTTIretrieval>
Summary:
  Interface to an output stream for RTTI information or declaration.
Description:
  IJclInfoWriter is an interface that's used as an output
  stream for the WriteTo and DeclarationTo of the RTTI
  interface. The interface provides methods and properties to
  allow for:
    *   automatic word wrapping at a given column
    *   set indentation levels
    *   write a line to the underlaying object.
  The JclRTTI unit provides you with an abstract base
  implementation and a descendant implementation that uses a
  TStrings descendant as output.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------

@@MaxPrefixCut
Summary:
  Maximum number of initial characters allowed to skip.
Description:
  Maximum number of initial characters allowed to skip.
See also:
  JclGenerateEnumTypeBasedOn
  PREFIX_CUT_EQUAL
  PREFIX_CUT_LOWERCASE
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@PREFIX_CUT_EQUAL
Summary:
  Skip all initial characters common to all values.
Description:
  Skip all initial characters common to all values.
See also:
  JclGenerateEnumTypeBasedOn
  MaxPrefixCut
  PREFIX_CUT_LOWERCASE
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@PREFIX_CUT_LOWERCASE
Summary:
  Skip all initial lowercase characters.
Description:
  Skip all initial lowercase characters.
See also:
  JclGenerateEnumTypeBasedOn
  MaxPrefixCut
  PREFIX_CUT_EQUAL
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------

@@IJclInfoWriter.GetWrap
Summary:
  Returns the column at which wrapping will take place.
Description:
  GetWrap returns the column at which the output should be
  wrapped. GetWrap is the read method for the Wrap property.
Result:
  The column at which wrapping will take place.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter.Indent
Summary:
  Increment the indentation level by 1.
Description:
  Indent will increment the indentation level by 1. Each
  identation level will result in two spaces.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter.Outdent
Summary:
  Decrement the indentation level by 1.
Description:
  Outdent will decrement the indentation level by 1.
See also:
  Indent
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter.SetWrap@Integer
Summary:
  Sets a new word wrap column.
Description:
  SetWrap sets the column at which output will be word wrapped.
  SetWrap is the write specifier for the Wrap property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter.Wrap
Summary:
  Word wrap column.
Description:
  Wrap holds the word wrap column. Read Wrap to determine the
  column at which text will word wrap or set Wrap to a new
  wrapping column.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter.Write@string
Summary:
  Outputs a string to the underlaying object.
Description:
  Write will write the specified string to the underlaying
  object. Just as Write in Object Pascal, there will be no CR/LF
  appended to the string. Use Writeln if you want an CR/LF
  appended when the string is outputed. If the string contains
  CR/LF, it will be seen as a separate string for which
  indentation level is taken into consideration.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@IJclInfoWriter.Writeln@string
Summary:
  Writes the specified text and appends a CR/LF.
Description:
  Writeln will output the specified string and appends a CR/LF.
  Each CR/LF in the text will be considered a new line for
  which indentation will be performed.
Parameters:
  S - Text to be outputed. Each CR/LF will be considered a new line for which indentation will be performed.
See also:
  Write
  Indent
  Outdent
  Wrap
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.PrimWrite@string
Summary:
  Primary write method.
Description:
  PrimWrite is an abstract method that does the actual writing
  to the underlaying object. S is guarenteed to be no longer
  than Wrap characters will be exactly 1 line with proper
  indentation.

  Override PrimWrite in descendants to write the output to the
  object, device or stream.
Parameters:
  S - The string to write to the output device/stream/object. The
      string has proper indentation, consists of 1 line and will be
      no longer than the number of character specified by the Wrap
      property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.IndentLevel
Summary:
  The indentation level.
Description:
  IndentLevel holds the current indentation level.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.DoWriteCompleteLines
Summary:
  Writes all complete lines to the output object/device/method.
Description:
  DoWriteCompleteLines writes any complete l ines currently in
  the buffer. The info writer buffers text until it has at
  least a complete line. This is done to allow mulitple
  successive calls to the Write method to be indented / word
  wrapped properly. 

  DoWriteCompleteLines will check if there's at least a
  complete line in the buffer, and if there is, it will call
  PrimWrite to output that line and removes it from the buffer.
  It will loop until there are no complete lines left.

  After a call to this method the buffer could be either empty
  or contain a partial (unfinished) line.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.DoWrap
Summary:
  Performs word wrapping on the text currently in the buffer.
Description:
  DoWrap performs word wrapping on the lines in the buffer.
  DoWrap is called by the Write method to apply word wrapping
  to the last written string.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.Destroy
Summary:
  Flushes the line buffer and destroys the writer object.
Description:
  Destroy will empty the line buffer and then performs the
  usual destruction of the instance.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.CurLine
Summary:
  Line buffer.
Description:
  CurLine is the line buffer. When changing the contents of
  CurLine, call DoWrap and DoWriteCompleteLines to process both
  word wrapping and indentation (DoWrap) and write any
  completed lines to the output device/object/stream.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter.Create@Integer
Summary:
  Instantiates an writer object.
Description:
  Creates an instance and sets the Wrap property to a default value.
Parameters:
  AWrap - Initial value for the Wrap property.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoWriter
Summary:
  Abstract base RTTI outout class.
Description:
  Abstract base class for RTTI info output. Do no create an
  instance of this class but rather use a descendant (JclRTTI
  provides a descendant to write to a TStrings descendant).

  The class implements all properties and methods of the
  IJclInfoWriter interface and adds some internal methods and
  properties.

  Descendants should override the PrimWrite method to do the
  actual writing.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoStringsWriter
Summary:
  TStrings output class.
Description:
  RTTI info writer class that sends it's output to a TStrings descendant.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoStringsWriter.Strings
Summary:
  TStrings that receives the output.
Description:
  Strings is a reference to the TStrings that is used as the output.
Donator:
  Marcel Bestebroer
--------------------------------------------------------------------------------
@@TJclInfoStringsWriter.Create@TStrings@Integer
Summary:
  Instantiates an writer object.
Description:
  Creates an instance and sets the Wrap property to a default value.
Parameters:
  AStrings - TStrings descendant that is to receive the output.
  AWrap - Initial value for the Wrap property.
Donator:
  Marcel Bestebroer
