<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
  <package name="lcl">
    <!--
      ====================================================================
      LCLProc
      ====================================================================
    -->
    <module name="LCLProc">
      <short>Useful lower-level helper functions and classes.</short>
      <descr>
        <p>
          <file>lclproc.pas</file> contains lower-level  classes and helper routines that are useful in LCL applications. This file is part of the Lazarus Component Library (<b>LCL</b>).
        </p>
      </descr>

      <!-- unresolved external references -->
      <element name="MacOSAll"/>
      <element name="Classes"/>
      <element name="SysUtils"/>
      <element name="Math"/>
      <element name="Types"/>
      <element name="Laz_AVL_Tree"/>
      <element name="LazFileUtils"/>
      <element name="LazUtilities"/>
      <element name="LazMethodList"/>
      <element name="LazUTF8"/>
      <element name="LazLoggerBase"/>
      <element name="LazTracer"/>
      <element name="LCLStrConsts"/>
      <element name="LCLType"/>

      <element name="TMethodList">
        <short>A list for method references.</short>
        <descr>
        <p>
          <var>TMethodList</var> is an alias for the TMethodList type in the <file>LazMethodList</file> unit.
        </p>
        </descr>
        <seealso>
          <link id="#lazutils.lazmethodlist.TMethodList">TMethodList</link>
        </seealso>
      </element>

      <element name="TDebugLCLItemInfo">
        <short>
          A node in TDebugLCLItems, holding information about a heap object.
        </short>
        <descr/>
        <seealso>
          <link id="TDebugLCLItems"/>
        </seealso>
      </element>

      <element name="TDebugLCLItemInfo.Item">
        <short>The address of the item.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItemInfo.IsDestroyed">
        <short>True when the item has been destroyed.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItemInfo.Info">
        <short>A descriptive string for the item.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItemInfo.CreationStack">
        <short>Stack trace at creation of the object.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItemInfo.DestructionStack">
        <short>Stack trace at destruction of the object.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItemInfo.AsString">
        <short>All information about the object as a string value.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TDebugLCLItemInfo.AsString.Result">
        <short/>
      </element>
      <element name="TDebugLCLItemInfo.AsString.WithStackTraces">
        <short>True to include stack traces.</short>
      </element>

      <element name="TDebugLCLItemInfo.Destroy">
        <short>Destructor for the class instance.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItems">
        <short>
          A list describing dynamically allocated (and destroyed) memory objects.
        </short>
        <descr>
          The list holds descriptive information about the object, and stack traces at the time of creation and destruction.
        </descr>
        <seealso/>
      </element>

      <element name="TDebugLCLItems.FItems">
        <short>The list entries, organized as an AVL tree.</short>
      </element>

      <element name="TDebugLCLItems.FName" link="#lcl.lclproc.TDebugLCLItems.Name"/>

      <element name="TDebugLCLItems.Create">
        <short>Constructor for the class instance.</short>
        <descr>
          <p>
            Sets the <var>Name</var> property to the value in <var>TheName</var>. Allocates resources for the internal <var>TAvlTree</var> instance used in the class.
          </p>
        </descr>
      </element>
      <element name="TDebugLCLItems.Create.TheName">
        <short>The descriptive name of the list.</short>
      </element>

      <element name="TDebugLCLItems.Destroy">
        <short>Destructor for the class instance.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TDebugLCLItems.FindInfo">
        <short>
          Returns information about an item, optionally creating an entry if not found.
        </short>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>
      <element name="TDebugLCLItems.FindInfo.Result">
        <short>The item information, or Nil if none was found or created.</short>
      </element>
      <element name="TDebugLCLItems.FindInfo.p">
        <short>The address of the item to find.</short>
      </element>
      <element name="TDebugLCLItems.FindInfo.CreateIfNotExists">
        <short>True means create an according list entry, if none existed yet.</short>
      </element>

      <element name="TDebugLCLItems.IsDestroyed">
        <short>True when the item has been destroyed.</short>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>
      <element name="TDebugLCLItems.IsDestroyed.Result">
        <short>
          True when destroyed, False when alive or not listed.
        </short>
      </element>
      <element name="TDebugLCLItems.IsDestroyed.p">
        <short>The address to find.</short>
      </element>

      <element name="TDebugLCLItems.IsCreated">
        <short>True when the item is alive.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TDebugLCLItems.IsCreated.Result">
        <short>True when the item is listed and has not yet been destroyed.</short>
      </element>
      <element name="TDebugLCLItems.IsCreated.p">
        <short>The address to find.</short>
      </element>

      <element name="TDebugLCLItems.MarkCreated">
        <short>Checked insert of an item.</short>
        <descr/>
        <errors>
          GDB exception 'RaiseDoubleCreated' when the address is already in use.
        </errors>
        <seealso/>
      </element>
      <element name="TDebugLCLItems.MarkCreated.Result">
        <short>The info object describing the address.</short>
      </element>
      <element name="TDebugLCLItems.MarkCreated.p">
        <short>The address to add.</short>
      </element>
      <element name="TDebugLCLItems.MarkCreated.InfoText">
        <short>Descriptive text about the item.</short>
      </element>

      <element name="TDebugLCLItems.MarkDestroyed">
        <short>Checked destruction notification.</short>
        <descr/>
        <errors>
          <ul>
            <li>
              GDB exception 'TDebugLCLItems.MarkDestroyed' when the item was not yet created.
            </li>
            <li>
              GDB exception 'RaiseDoubleDestroyed' when the item was already destroyed.
            </li>
          </ul>
        </errors>
        <seealso/>
      </element>

      <element name="TDebugLCLItems.MarkDestroyed.p">
        <short>The address to mark as destroyed.</short>
      </element>

      <element name="TDebugLCLItems.GetInfo">
        <short>Returns textual information about an object.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TDebugLCLItems.GetInfo.Result">
        <short>The descriptive string.</short>
      </element>
      <element name="TDebugLCLItems.GetInfo.p">
        <short>The address to find.</short>
      </element>
      <element name="TDebugLCLItems.GetInfo.WithStackTraces">
        <short>True means include stack traces.</short>
      </element>

      <element name="TDebugLCLItems.Name">
        <short>The descriptive name of the list.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="CompareDebugLCLItemInfos">
        <short>Compare function for the TDebugLCLItems AVL tree.</short>
        <descr>
          Compares the Item addresses.
        </descr>
        <seealso/>
      </element>
      <element name="CompareDebugLCLItemInfos.Result">
        <short/>
      </element>
      <element name="CompareDebugLCLItemInfos.Data1">
        <short/>
      </element>
      <element name="CompareDebugLCLItemInfos.Data2">
        <short/>
      </element>

      <element name="CompareItemWithDebugLCLItemInfo">
        <short>Compare function for <link id="TDebugLCLItems.FindInfo"/></short>
        <descr/>
        <seealso/>
      </element>
      <element name="CompareItemWithDebugLCLItemInfo.Result">
        <short/>
      </element>
      <element name="CompareItemWithDebugLCLItemInfo.Item">
        <short/>
      </element>
      <element name="CompareItemWithDebugLCLItemInfo.DebugItemInfo">
        <short/>
      </element>

      <element name="TStringsSortCompare">
        <short>
          Specifies a comparison function type for string values in a TStrings instance.
        </short>
        <descr>
          <p>
            TStringsSortCompare is an Integer function type used to compare string values to determine the relative sort order. The return value indicates the relative sort order for the compared items, and normally contains a value like the one returned from CompareText. For example:
          </p>
          <dl>
            <dt>&lt;0</dt>
            <dd>Item1 has a value that comes before Item2.</dd>
            <dt>0</dt>
            <dd>Item1 and Item2 have the same value.</dd>
            <dt>&gt;0</dt>
            <dd>Item1 has a value that comes after Item2.</dd>
          </dl>
          <p>
            The address for a TStringsSortCompare type is passed as an argument to the MergeSort routine.
          </p>
        </descr>
        <seealso>
          <link id="MergeSort"/>
        </seealso>
      </element>
      <element name="TStringsSortCompare.Result">
        <short>Integer with the relative sort order for the compared values.</short>
      </element>
      <element name="TStringsSortCompare.Item1">
        <short>First string value for the comparison.</short>
      </element>
      <element name="TStringsSortCompare.Item2">
        <short>Second string value for the comparison.</short>
      </element>

      <element name="MergeSort">
        <short>Implements a merge/sort for TStrings or TFPList.</short>
        <descr>
          <p>
            MergeSort is an overloaded routine used to implement a comparison-based sort routine for values in List. List can be a TStrings or TFPList instance. No actions are performed in the routine when List has not been assigned (contains Nil).
          </p>
          <p>
            The StartIndex and EndIndex arguments allow the initial and final entries in a TFPList instance to be specified. When the values are omitted, they default to the first value (position 0) and the last value (Count-1) in List.
          </p>
          <p>
            OnCompare is the comparison routine used to determine the order for the sorted values. It can be a TListSortCompare or TStringsSortCompare function, depending on the overloaded variant of the called routine.
          </p>
          <p>
            MergeSort implements the J. von Nuemann divide-and-conquer algorithm, with an insertion sort used for lists with 6 or fewer elements.
          </p>
          <!-- TODO: Explain TStrings vs TFPList, insertion sort, etc. -->
        </descr>
        <seealso>
          <link id="TListSortCompare"/>
          <link id="TStringsSortCompare"/>
        </seealso>
      </element>
      <element name="MergeSort.List">
        <short>The list of values to sort (overloaded type).</short>
      </element>
      <element name="MergeSort.OnCompare">
        <short>The sort compare function.</short>
      </element>
      <element name="MergeSort.StartIndex">
        <short>The initial entry in List used in the merge/sort.</short>
      </element>
      <element name="MergeSort.EndIndex">
        <short>The final entry in List used in the merge/sort.</short>
      </element>

      <element name="KeyAndShiftStateToKeyString">
        <short>
          Converts the specified key code and shift modifier to their representation as a String.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="KeyAndShiftStateToKeyString.Result">
        <short>String representation for the specified value; i. e. 'Ctrl+Home'.</short>
      </element>
      <element name="KeyAndShiftStateToKeyString.Key">
        <short>Key code converted in the routine.</short>
      </element>
      <element name="KeyAndShiftStateToKeyString.ShiftState">
        <short>Shift, Ctrl, Alt modifier converted in the routine.</short>
      </element>

      <element name="KeyStringIsIrregular">
        <short>
          Indicates if the string contains the 'Word(nn)' representation for an unknown key code.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="KeyStringIsIrregular.Result">
        <short>True when the string is not a named virtual key code.</short>
      </element>
      <element name="KeyStringIsIrregular.s">
        <short>Value examined in the method.</short>
      </element>

      <element name="ShortCutToText">
        <short>Returns the textual representation for a shortcut value.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="ShortCutToText.Result">
        <short>Localized text value for the specified shortcut.</short>
      </element>
      <element name="ShortCutToText.ShortCut">
        <short/>
      </element>

      <element name="ShortCutToTextRaw">
        <short>
          Converts a shortcut value to its text representation without localization.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="ShortCutToTextRaw.Result">
        <short>Non-localized text value for the specified shortcut.</short>
      </element>
      <element name="ShortCutToTextRaw.ShortCut">
        <short>Shortcut value converted in the method.</short>
      </element>

      <element name="TextToShortCut">
        <short>Converts the textual representation for a shortcut into a shortcut value.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TextToShortCut.Result">
        <short>TShortcut value for the specified text.</short>
      </element>
      <element name="TextToShortCut.ShortCutText">
        <short>Text converted to a shortcut value in the method.</short>
      </element>

      <element name="TextToShortCutRaw">
        <short>
          Converts the non-localized textual representation for a shortcut into a shortcut value.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="TextToShortCutRaw.Result">
        <short/>
      </element>
      <element name="TextToShortCutRaw.ShortCutText">
        <short/>
      </element>

      <element name="GetCompleteText">
        <short>Finds a string in a list, given its first few characters.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="GetCompleteText.Result">
        <short>The found string.</short>
      </element>
      <element name="GetCompleteText.sText">
        <short>The begin of the string to find.</short>
      </element>
      <element name="GetCompleteText.iSelStart">
        <short>The list index where the search should start.</short>
      </element>
      <element name="GetCompleteText.bCaseSensitive">
        <short>True means case-sensitive comparison.</short>
      </element>
      <element name="GetCompleteText.bSearchAscending">
        <short>True means search ascending from iSelStart.</short>
      </element>
      <element name="GetCompleteText.slTextList">
        <short>The list to search.</short>
      </element>

      <element name="IsEditableTextKey">
        <short>
          Indicates if the specified key code has a value allowed in an editable text string.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="IsEditableTextKey.Result">
        <short/>
      </element>
      <element name="IsEditableTextKey.Key">
        <short>The virtual key code examined in the routine.</short>
      </element>

      <element name="TSendApplicationMessageFunction">
        <short>Hooks used to prevent circular unit references.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TSendApplicationMessageFunction.Result">
        <short/>
      </element>
      <element name="TSendApplicationMessageFunction.Msg">
        <short/>
      </element>
      <element name="TSendApplicationMessageFunction.WParam">
        <short/>
      </element>
      <element name="TSendApplicationMessageFunction.LParam">
        <short/>
      </element>

      <element name="TOwnerFormDesignerModifiedProc">
        <short/>
        <descr/>
        <seealso/>
      </element>
      <element name="TOwnerFormDesignerModifiedProc.AComponent">
        <short/>
      </element>

      <element name="SendApplicationMessageFunction">
        <short>
          Function used to send an application message using the specified parameter values.
        </short>
        <descr/>
        <seealso/>
      </element>

      <element name="OwnerFormDesignerModifiedProc">
        <short/>
        <descr/>
        <seealso/>
      </element>

      <element name="SendApplicationMessage">
        <short>
          Sends an application message using the specified parameter values.
        </short>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <element name="SendApplicationMessage.Result">
        <short/>
      </element>
      <element name="SendApplicationMessage.Msg">
        <short/>
      </element>
      <element name="SendApplicationMessage.WParam">
        <short/>
      </element>
      <element name="SendApplicationMessage.LParam">
        <short/>
      </element>

      <element name="OwnerFormDesignerModified">
        <short/>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <element name="OwnerFormDesignerModified.AComponent">
        <short/>
      </element>

      <element name="FreeThenNil">
        <short>Frees the TObject instance, before setting the reference to Nil.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="FreeThenNil.obj">
        <short>The object reference (variable).</short>
      </element>

      <element name="RegisterInterfaceInitializationHandler">
        <short/>
        <descr/>
        <seealso/>
      </element>
      <element name="RegisterInterfaceInitializationHandler.p">
        <short/>
      </element>

      <element name="CallInterfaceInitializationHandlers">
        <short>Calls each of the registered initialization handlers.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="RegisterInterfaceFinalizationHandler">
        <short/>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <element name="RegisterInterfaceFinalizationHandler.p">
        <short/>
      </element>

      <element name="CallInterfaceFinalizationHandlers">
        <short>Calls each of the registered finalization handlers.</short>
        <descr/>
        <errors/>
        <seealso/>
      </element>

      <element name="OffsetRect">
        <short>
          Increments the Top, Left and Bottom, Right rectangle coordinates by the specified amounts.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="OffsetRect.Result">
        <short>True when the TopLeft coordinates are all positive.</short>
      </element>
      <element name="OffsetRect.ARect">
        <short/>
      </element>
      <element name="OffsetRect.dx">
        <short/>
      </element>
      <element name="OffsetRect.dy">
        <short/>
      </element>

      <element name="MoveRect">
        <short>Moves the rectangle origin to the given coordinates.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="MoveRect.ARect">
        <short/>
      </element>
      <element name="MoveRect.x">
        <short/>
      </element>
      <element name="MoveRect.y">
        <short/>
      </element>

      <element name="MoveRectToFit">
        <short>Adjusts an rectangle to fit entirely into another one.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="MoveRectToFit.ARect">
        <short/>
      </element>
      <element name="MoveRectToFit.MaxRect">
        <short>The bounding rectangle.</short>
      </element>

      <element name="MakeMinMax">
        <short>Eventually swaps the variable contents,
          so that i1 is not higher than i2.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="MakeMinMax.i1">
        <short>Receives the minimum value of both variables.</short>
      </element>
      <element name="MakeMinMax.i2">
        <short>Receives the maximum value of both variables.</short>
      </element>

      <element name="CalculateLeftTopWidthHeight">
        <short>Converts coordinates into kind of a rectangle with positive Width and Height.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="CalculateLeftTopWidthHeight.X1">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.Y1">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.X2">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.Y2">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.Left">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.Top">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.Width">
        <short/>
      </element>
      <element name="CalculateLeftTopWidthHeight.Height">
        <short/>
      </element>

      <element name="DeleteAmpersands">
        <short>
          Removes all Ampersand ('&amp;') characters Str, and return the position for the first occurence.
        </short>
        <descr>
          <p>
            <var>DeleteAmpersands</var> is an <var>Integer</var> function used to remove all occurrences of the Ampersand character in Str. The return value contains the position in Str where the first occurence of the of the character was found.
          </p>
          <p>
            Double Ampersands (&amp;&amp;) are converted to a single &amp; character in Str.
          </p>
          <p>
            DeleteAmpersands can be used to remove the prefix used for accelerator keys in button, tool bar, and menu  captions.
          </p>
        </descr>
        <errors/>
        <seealso/>
      </element>
      <element name="DeleteAmpersands.Result">
        <short>Position where the first ampersand character was found.</short>
      </element>
      <element name="DeleteAmpersands.Str">
        <short>String with values converted in the method.</short>
      </element>

      <element name="RemoveAmpersands">
        <short>
          Removes single Ampersand characters, and returns the converted value.
        </short>
        <descr>
          <p>
            <var>RemoveAmpersands</var> is an overloaded function used to remove all occurrences of a single Ampersand (&amp;) character from the specified value. It provides variants that operate on String and PChar types. The return value contains the original value after all single Ampersand characters have been removed. Double Ampersand (&amp;&amp;) characters are converted into a single Ampersand character.
          </p>
          <p>
            Use <var>DeleteAmpersands</var> to remove Ampersand character in the original String value.
          </p>
        </descr>
        <seealso/>
      </element>
      <element name="RemoveAmpersands.Result">
        <short>Value after single Ampersand characters are removed.</short>
      </element>
      <element name="RemoveAmpersands.ASource">
        <short>String with the values examined in the routine.</short>
      </element>
      <element name="RemoveAmpersands.Src">
        <short>PChar value examined in the routine.</short>
      </element>
      <element name="RemoveAmpersands.LineLength">
        <short>Length of the value in Src.</short>
      </element>

      <element name="CompareHandles">
        <short>Compares two Handles, returning the relative order for the handle values.</short>
        <descr>
          <p>
            The return value contains the following:
          </p>
          <dl>
            <dt>-1</dt>
            <dd>h1 has a lower value than h2.</dd>
            <dt>0</dt>
            <dd>h1 and h2 have the same value.</dd>
            <dt>1</dt>
            <dd>h1 has a higher value than h2.</dd>
          </dl>
        </descr>
        <seealso/>
      </element>
      <element name="CompareHandles.Result">
        <short>Relative order for the compared handle values.</short>
      </element>
      <element name="CompareHandles.h1">
        <short>First handle for the comparison.</short>
      </element>
      <element name="CompareHandles.h2">
        <short>Second handle for the comparison.</short>
      </element>

      <element name="CompareRect">
        <short>
          Indicates if the specified rectangle pointers have the same coordinate values.
        </short>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <element name="CompareRect.Result">
        <short>
          True when the top, left, bottom, and right values in each rectangle are the same.
        </short>
      </element>
      <element name="CompareRect.R1">
        <short>Pointer to the first rectangle for the comparison.</short>
      </element>
      <element name="CompareRect.R2">
        <short>Pointer to the second rectangle for the comparison.</short>
      </element>

      <element name="ComparePoints">
        <short>Compares the specified TPoint values to get their relative order.</short>
        <descr>
          <p>
            <var>ComparePoints</var> is an <var>Integer</var> function used to compare the coordinates in the specified <var>TPoint</var> instances to determine their relative order. The return value contains -1, 0, or 1 for the following conditions:
          </p>
          <dl>
            <dt>-1</dt>
            <dd>p1.y is smaller than p2.y, or p1.x is smaller than p2.x.</dd>
            <dt>0</dt>
            <dd>p1 and p2 have the same x and y values.</dd>
            <dt>1</dt>
            <dd>p1.y is larger than p2.y, or p1.x is larger than p2.x.</dd>
          </dl>
        </descr>
        <seealso/>
      </element>
      <element name="ComparePoints.Result">
        <short>Relative order for the compared TPoint values.</short>
      </element>
      <element name="ComparePoints.p1">
        <short>First TPoint instance for the comparison.</short>
      </element>
      <element name="ComparePoints.p2">
        <short>Second TPoint instance for the comparison.</short>
      </element>

      <element name="CompareCaret">
        <short>See ComparePoints</short>
        <descr>
          <p>
            See ComparePoints.
          </p>
        </descr>
        <seealso>
          <link id="ComparePoints"/>
        </seealso>
      </element>
      <element name="CompareCaret.Result">
        <short/>
      </element>
      <element name="CompareCaret.FIrstCaret">
        <short/>
      </element>
      <element name="CompareCaret.SecondCaret">
        <short/>
      </element>

      <element name="CompareMethods">
        <short>Returns true when both method references are equal.</short>
        <descr>
          Deprecated. Use LazMethodList.CompareMethods instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="CompareMethods.Result">
        <short/>
      </element>
      <element name="CompareMethods.m1">
        <short/>
      </element>
      <element name="CompareMethods.m2">
      <short/>
      </element>

      <element name="ComparePointers">
        <short/>
        <descr>
          Deprecated. Use LazUtilities.ComparePointers instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="ComparePointers.Result">
        <short/>
      </element>
      <element name="ComparePointers.p1">
        <short/>
      </element>
      <element name="ComparePointers.p2">
        <short/>
      </element>

      <element name="RoundToInt">
        <short>Returns the rounded value as an Integer.</short>
        <descr>
          Deprecated. Use LazUtilities.RoundToInt instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="RoundToInt.Result">
        <short/>
      </element>
      <element name="RoundToInt.e">
        <short/>
      </element>

      <element name="RoundToCardinal">
        <short>Returns the rounded value as an Cardinal.</short>
        <descr>
          Deprecated. Use LazUtilities.RoundToCardinal instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="RoundToCardinal.Result">
        <short/>
      </element>
      <element name="RoundToCardinal.e">
        <short/>
      </element>

      <element name="TruncToInt">
        <short>Returns the truncated value as an Integer.</short>
        <descr>
          Deprecated. Use LazUtilities.TruncToInt instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="TruncToInt.Result">
        <short/>
      </element>
      <element name="TruncToInt.e">
        <short/>
      </element>

      <element name="TruncToCardinal">
        <short>Returns the rounded value as an Cardinal.</short>
        <descr>
          Deprecated. Use LazUtilities.TruncToCardinal instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="TruncToCardinal.Result">
        <short/>
      </element>
      <element name="TruncToCardinal.e">
        <short/>
      </element>

      <element name="StrToDouble">
        <short>Converts an numeric string into an Double value.</short>
        <descr>
          Deprecated. Use LazUtilities.StrToDouble instead.
        </descr>
        <seealso/>
        <version>
          Deprecated in LCL version 2.1. Will be removed in version 2.3.
        </version>
      </element>
      <element name="StrToDouble.Result">
        <short/>
      </element>
      <element name="StrToDouble.s">
        <short/>
      </element>

      <element name="RaiseGDBException">
        <short>Raises a catchable exception.</short>
        <descr>
          <p>
            Normally, GDB does not catch FPC Exception objects. This procedure raises a standard divide by zero exception which is caught by GDB.
          </p>
        </descr>
        <errors/>
        <seealso/>
      </element>
      <element name="RaiseGDBException.Msg">
        <short/>
      </element>

      <element name="DebugLn">
        <short>Writes a number of strings (heavily overloaded) to the debug output.</short>
        <errors/>
        <seealso/>
      </element>
      <element name="DebugLn.S">
        <short>A single string, or a Format string when followed by an argument list.
        </short>
      </element>
      <element name="DebugLn.Args">
        <short>Writes the formatted dump of the typed arguments.</short>
      </element>
      <element name="DebugLn.s1">
        <short/>
      </element>
      <element name="DebugLn.s2">
        <short/>
      </element>
      <element name="DebugLn.s3">
        <short/>
      </element>
      <element name="DebugLn.s4">
        <short/>
      </element>
      <element name="DebugLn.s5">
        <short/>
      </element>
      <element name="DebugLn.s6">
        <short/>
      </element>
      <element name="DebugLn.s7">
        <short/>
      </element>
      <element name="DebugLn.s8">
        <short/>
      </element>
      <element name="DebugLn.s9">
        <short/>
      </element>
      <element name="DebugLn.s10">
        <short/>
      </element>
      <element name="DebugLn.s11">
        <short/>
      </element>
      <element name="DebugLn.s12">
        <short/>
      </element>
      <element name="DebugLn.s13">
        <short/>
      </element>
      <element name="DebugLn.s14">
        <short/>
      </element>
      <element name="DebugLn.s15">
        <short/>
      </element>
      <element name="DebugLn.s16">
        <short/>
      </element>

      <element name="DebugLnEnter">
        <short/>
        <descr/>
        <seealso/>
      </element>
      <element name="DebugLnEnter.s">
        <short/>
      </element>
      <element name="DebugLnEnter.Args">
        <short/>
      </element>
      <element name="DebugLnEnter.s1"/>
      <element name="DebugLnEnter.s2"/>
      <element name="DebugLnEnter.s3"/>
      <element name="DebugLnEnter.s4"/>
      <element name="DebugLnEnter.s5"/>
      <element name="DebugLnEnter.s6"/>
      <element name="DebugLnEnter.s7"/>
      <element name="DebugLnEnter.s8"/>
      <element name="DebugLnEnter.s9"/>
      <element name="DebugLnEnter.s10"/>
      <element name="DebugLnEnter.s11"/>
      <element name="DebugLnEnter.s12"/>
      <element name="DebugLnEnter.s13"/>
      <element name="DebugLnEnter.s14"/>
      <element name="DebugLnEnter.s15"/>
      <element name="DebugLnEnter.s16"/>
      <element name="DebugLnEnter.s17"/>
      <element name="DebugLnEnter.s18"/>

      <element name="DebugLnExit">
        <short/>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>
      <element name="DebugLnExit.s">
        <short/>
      </element>
      <element name="DebugLnExit.Args">
        <short/>
      </element>
      <element name="DebugLnExit.s1"/>
      <element name="DebugLnExit.s2"/>
      <element name="DebugLnExit.s3"/>
      <element name="DebugLnExit.s4"/>
      <element name="DebugLnExit.s5"/>
      <element name="DebugLnExit.s6"/>
      <element name="DebugLnExit.s7"/>
      <element name="DebugLnExit.s8"/>
      <element name="DebugLnExit.s9"/>
      <element name="DebugLnExit.s10"/>
      <element name="DebugLnExit.s11"/>
      <element name="DebugLnExit.s12"/>
      <element name="DebugLnExit.s13"/>
      <element name="DebugLnExit.s14"/>
      <element name="DebugLnExit.s15"/>
      <element name="DebugLnExit.s16"/>
      <element name="DebugLnExit.s17"/>
      <element name="DebugLnExit.s18"/>

      <element name="DbgOut">
        <short/>
        <descr/>
        <errors/>
        <seealso/>
      </element>
      <element name="DbgOut.s">
        <short/>
      </element>
      <element name="DbgOut.Args">
        <short/>
      </element>
      <element name="DbgOut.s1"/>
      <element name="DbgOut.s2"/>
      <element name="DbgOut.s3"/>
      <element name="DbgOut.s4"/>
      <element name="DbgOut.s5"/>
      <element name="DbgOut.s6"/>
      <element name="DbgOut.s7"/>
      <element name="DbgOut.s8"/>
      <element name="DbgOut.s9"/>
      <element name="DbgOut.s10"/>
      <element name="DbgOut.s11"/>
      <element name="DbgOut.s12"/>

      <element name="DbgS">
        <short>Formats debug output for various argument types (overloaded).</short>
        <descr>
          <ul>
            <li>boolean: "True" or "False".</li>
            <li>pointer: hexadecimal address.</li>
            <li>TRect, TPoint: shows the x/y coordinates.</li>
            <li>TComponentState: set.</li>
            <li>TObject: Name:ClassName.</li>
            <li>TClass: ClassName.</li>
            <li>
              String, WideString: chars &gt; #126 are translated into #nn (or #nnnn) character constants.
            </li>
          </ul>
        </descr>
        <seealso/>
      </element>
      <element name="DbgS.Result">
        <short/>
      </element>
      <element name="DbgS.s">
        <short/>
      </element>
      <element name="DbgS.q">
        <short/>
      </element>
      <element name="DbgS.MaxDecimals">
        <short/>
      </element>
      <element name="DbgS.m">
        <short/>
      </element>
      <element name="DbgS.c">
        <short/>
      </element>
      <element name="DbgS.i">
        <short/>
      </element>
      <element name="DbgS.r">
        <short/>
      </element>
      <element name="DbgS.p">
        <short/>
      </element>
      <element name="DbgS.e">
        <short/>
      </element>
      <element name="DbgS.b">
        <short/>
      </element>
      <element name="DbgS.Shift">
        <short/>
      </element>
      <element name="DbgS.i1">
        <short/>
      </element>
      <element name="DbgS.i2">
        <short/>
      </element>
      <element name="DbgS.i3">
        <short/>
      </element>
      <element name="DbgS.i4">
        <short/>
      </element>
      <element name="DbgS.ASize">
        <short/>
      </element>
      <element name="DbgS.ATM">
        <short/>
      </element>
      <element name="DbgS.AScrollInfo">
        <short/>
      </element>

      <element name="DbgSName">
        <short>Returns the component or class name.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgSName.Result">
        <short/>
      </element>
      <element name="DbgSName.p">
        <short/>
      </element>

      <element name="DbgStr">
        <short>
          Converts control characters, or characters above #126 into #hex format.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgStr.Result">
        <short/>
      </element>
      <element name="DbgStr.StringWithSpecialChars">
        <short/>
      </element>

      <element name="DbgWideStr">
        <short>
          Converts control characters, or characters above #126 into #hex format.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgWideStr.Result">
        <short/>
      </element>
      <element name="DbgWideStr.StringWithSpecialChars">
        <short/>
      </element>

      <element name="dbgMemRange">
        <short>Provides an hex dump of a memory section.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="dbgMemRange.Result">
        <short>The formatted dump.</short>
      </element>
      <element name="dbgMemRange.P">
        <short>The start address.</short>
      </element>
      <element name="dbgMemRange.Count">
        <short>The number of bytes to dump.</short>
      </element>
      <element name="dbgMemRange.Width">
        <short>The number of bytes per line, zero for no line breaks.</short>
      </element>

      <element name="dbgMemStream">
        <short>Provides a hex dump of an memory stream.</short>
        <descr/>
        <errors>
          <p>
            The dump starts at the <b>current</b> stream position, the position moves to the end of the dumped range.
          </p>
        </errors>
        <seealso/>
      </element>
      <element name="dbgMemStream.Result">
        <short/>
      </element>
      <element name="dbgMemStream.MemStream">
        <short/>
      </element>
      <element name="dbgMemStream.Count">
        <short>The maximum number of bytes to dump.</short>
      </element>

      <element name="dbgObjMem">
        <short>Provides an hex dump of an TObject.</short>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>
      <element name="dbgObjMem.Result">
        <short/>
      </element>
      <element name="dbgObjMem.AnObject">
        <short/>
      </element>

      <element name="dbghex">
        <short>Provides an hex dump of an Int64 value, (sign + absolute value).</short>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>
      <element name="dbghex.Result">
        <short/>
      </element>
      <element name="dbghex.i">
        <short/>
      </element>

      <element name="DbgSWindowPosFlags">
        <short>Provides an dump of SetWindowPosition flags.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgSWindowPosFlags.Result">
        <short/>
      </element>
      <element name="DbgSWindowPosFlags.Flags">
        <short/>
      </element>

      <element name="DbgsVKCode">
        <short>Converts a virtual key code to its String representation.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgsVKCode.Result">
        <short/>
      </element>
      <element name="DbgsVKCode.c">
        <short/>
      </element>

      <element name="DbgOutThreadLog">
        <short/>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgOutThreadLog.Msg">
        <short/>
      </element>

      <element name="DebuglnThreadLog">
        <short/>
        <descr/>
        <seealso/>
      </element>
      <element name="DebuglnThreadLog.Msg">
        <short/>
      </element>
      <element name="DebuglnThreadLog.Args">
        <short/>
      </element>

      <element name="DbgSaveData">
        <short>Writes data into an file.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgSaveData.FileName">
        <short/>
      </element>
      <element name="DbgSaveData.AData">
        <short/>
      </element>
      <element name="DbgSaveData.ADataSize">
        <short/>
      </element>

      <element name="DbgAppendToFile">
        <short>Appends a line to the given file.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="DbgAppendToFile.FileName">
        <short/>
      </element>
      <element name="DbgAppendToFile.S">
        <short/>
      </element>

      <element name="DbgAppendToFileWithoutLn">
        <short>Appends (pre-formatted) text to an file.</short>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>
      <element name="DbgAppendToFileWithoutLn.FileName">
        <short/>
      </element>
      <element name="DbgAppendToFileWithoutLn.S">
        <short/>
      </element>

      <element name="CloseDebugOutput">
        <short/>
        <descr/>
        <errors>
        </errors>
        <seealso/>
      </element>

      <element name="ClassCase">
        <short>Indicates if a TClass instance is found in the specified array.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="ClassCase.Result">
        <short>
          Ordinal position in ACase where the TClass instance was found, or -1 when not found.
        </short>
      </element>
      <element name="ClassCase.AClass">
        <short>TClass instance to locate in ACase.</short>
      </element>
      <element name="ClassCase.ACase">
        <short>Array of TClass instances to examine in the routine.</short>
      </element>
      <element name="ClassCase.ADescendant">
        <short>True to consider descendants of AClass as a match in the routine.</short>
      </element>

      <element name="UTF16String">
        <short>Alias to the UnicodeString type.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="PUTF16String" link="UTF16String">
        <short>Pointer to the UTF16String type.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="UTF16CharacterLength">
        <short>
          Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> package for replacements.
        </short>
      </element>
      <element name="UTF16CharacterLength.Result">
        <short/>
      </element>
      <element name="UTF16CharacterLength.p">
        <short/>
      </element>

      <element name="UTF16Length">
        <short>
          Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> package for replacements.
        </short>
      </element>
      <element name="UTF16Length.Result">
        <short/>
      </element>
      <element name="UTF16Length.s">
        <short/>
      </element>
      <element name="UTF16Length.p">
        <short/>
      </element>
      <element name="UTF16Length.WordCount">
        <short/>
      </element>

      <element name="UTF16CharacterToUnicode">
        <short>
          Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> package for replacements.
        </short>
      </element>
      <element name="UTF16CharacterToUnicode.Result">
        <short/>
      </element>
      <element name="UTF16CharacterToUnicode.p">
        <short/>
      </element>
      <element name="UTF16CharacterToUnicode.CharLen">
        <short/>
      </element>

      <element name="UnicodeToUTF16">
        <short>
          Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> package for replacements.
        </short>
      </element>
      <element name="UnicodeToUTF16.Result">
        <short/>
      </element>
      <element name="UnicodeToUTF16.u">
        <short/>
      </element>

      <element name="CreateFirstIdentifier">
        <short>Replaces last digits with 1.</short>
        <descr>For example Name321 becomes Name1</descr>
        <seealso/>
      </element>
      <element name="CreateFirstIdentifier.Result">
        <short/>
      </element>
      <element name="CreateFirstIdentifier.Identifier">
        <short/>
      </element>

      <element name="CreateNextIdentifier">
        <short>
          Deprecated, see the <file>LazUTF8</file> unit in the <file>LazUtils</file> package for replacements.
        </short>
      </element>
      <element name="CreateNextIdentifier.Result">
        <short/>
      </element>
      <element name="CreateNextIdentifier.Identifier">
        <short/>
      </element>

      <element name="IsFontNameDefault">
        <short>Indicates if the specified name contains 'default'.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="IsFontNameDefault.Result">
        <short>True when AName contains 'default'.</short>
      </element>
      <element name="IsFontNameDefault.AName">
        <short>Font name examined in the routine.</short>
      </element>

      <element name="DebugLnMaxNestPrefixLen">
        <short/>
        <descr/>
        <seealso/>
      </element>

      <element name="DebugLnNestLvlIndent">
        <short/>
        <descr/>
        <seealso/>
      </element>

      <element name="DebugText">
        <short/>
        <descr/>
        <seealso/>
      </element>

      <element name="DebugLnProc">
        <short/>
        <descr/>
        <seealso/>
      </element>

      <element name="DebugOutProc">
        <short/>
        <descr/>
        <seealso/>
      </element>

    </module>
    <!-- LCLProc -->
  </package>
</fpdoc-descriptions>
