<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
<package name="lazutils">
<!--
====================================================================
LazLoggerBase
====================================================================
-->
<module name="LazLoggerBase">
<short>Defines base logging classes used in the Lazarus IDE.</short>
<descr>
  <p>
    <file>lazloggerbase.pas</file> contains classes, types, and routines used to implement the base logging mechanisms used in the Lazarus IDE. Its primary usage, when used along with the LazLogger unit,  is to provide output to the debugger in the Lazarus IDE.
  </p>
  <p>
    Logger classes (and routines) are found in units like:
  </p>
  <dl>
    <dt>LazLoggerBase.pas</dt>
    <dd>
      Provides the base TLazLogger class used as the common ancestor for other logger classes. Use this unit when you want to use the debugln routine. What LazLoggerBase does depends on whether the unit LazLogger is used in any other unit of your application. If  LazLogger is not used, LazLoggerBase will install a "blackhole logger" that discards all log messages. If LazLogger is used anywhere, then all units using LazLoggerBase will write the log messages as described under "Logging Output"
    </dd>
    <dt>LazLogger.pas</dt>
    <dd>
      Provides a logger class which writes output to a file or file handle. Use this unit to activate the functionality of LazLogger.
    </dd>
    <dt>LazLoggerProfiling.pas</dt>
    <dd>
      Provides a logger class which  captures memory usage and execution times.
    </dd>
    <dt>LazLoggerDummy.pas</dt>
    <dd>
      Re-implements the logger class methods with empty implementations. They are just calls to empty methods. This allows you to disable logging in a unit without the need to remove debugln statements.
    </dd>
  </dl>
  <p>
    The LazLoggerIntf.inc include file contains interface declarations for routines and operators which should be implemented in each of the units for the various loggers.
  </p>
  <p>
    <b>Usage</b>
  </p>
  <p>
    Add one of the logger classes to your application to enable output of logging messages to the destination supported in the logger class. By using the LazLogger unit, the following are enabled:
  </p>
  <ul>
    <li>A single string, or list of (up to 15) strings: DebugLn('Foo'); DbgOut('a','b');</li>
    <li>An array of const: DebugLn(['Foo=', 1, ' Bar=', anInteger]);</li>
    <li>Same arguments as Format(). String + array of const: DbgOut('a %d',[1]);</li>
  </ul>
  <p>
    Also there are tons of dbgs functions that converts common types to a string. For example dbgs(aRect) converts a variable of type TRect to a string.
  </p>
  <p>
    <b>Logger output</b>
  </p>
  <dl>
    <dt>Stdout/Console</dt>
    <dd>
      <p>
        By default the output created by DebugLn is written to the stdout device. The output is silently discarded if stdout is not open. On Windows this is the default behavior, if project type "Application" is used to create a Windows GUI application. To get a console alongside your Windows GUI application, you need to uncheck the option "Win32 gui application (-WG)" under Project options / Compiler options / Config and Target / Target specific options. Alternatively you can add {$APPTYPE CONSOLE} at the top of your project .lpr file, or configure multiple "Build Modes" to control the -WG switch.
      </p>
    </dd>
    <dt>File</dt>
    <dd>
      <p>
        Debug output can also be written to file. The initialization code of the logging unit checks your program's command line parameters for --debug-log=&lt;file&gt; (In Lazarus: Run / Run Parameters / Command line parameters). On finding this parameter, any subsequent debug output is sent to &lt;file&gt;.
      </p>
      <p>
        The param name can be changed with DebugLogger.ParamForLogFileName:='--debug-log'; This property exists only if the unit LazLogger is used. (LazLoggerBase does not define this property).
      </p>
      <p>
        If no '--debug-log' command line parameter has been given, it next checks if an operating system environment variable xxx_debuglog exists, where xxx is the program file name without extension. E.g. for Lazarus this would be lazarus_debuglog. If such an environment variable exists, it uses the file specified in that environment variable as file to receive debug output.
      </p>
    </dd>
  </dl>
  <p>
    <b>Multithreading</b>
  </p>
  <p>
    DebugLn is thread safe, since Lazarus 2.0. Earlier versions of this text stated "since 1.0", but a further race condition was found and fixed for 2.0.
  </p>
  <p>
    Calls to DbgOut, DebugLnEnter, DebugLnExit can be made from threads, but may not always format/indent the output correctly.
  </p>
  <p>
    The creation/setup/destruction/configuration of the logger is not thread-safe, and should be done before threads are started. Creation is usually done automatically during unit initialization. But any properties (eg ParamForLogFileName) should be set before accessing the logger from threads.
  </p>
  <p>
    Callback to events like OnDebugLn are made in each thread. The code in the callback must be thread save by itself. Changing the routine assigned to the property is <b>NOT</b> thread-safe.
  </p>
  <p>
    This file is part of the <file>LazUtils</file> package.
  </p>
</descr>
<!-- unresolved externals -->
<element name="Classes"/>
<element name="SysUtils"/>
<element name="Types"/>
<element name="Math"/>
<element name="LazClasses"/>
<element name="LazUTF8"/>

<!-- enumeration type Visibility: default -->
<element name="TLazLoggerLogGroupFlag">
  <short>Represents flags used for Log Groups in TLazLogger.</short>
  <descr/>
  <seealso>
    <link id="TLazLoggerLogGroup"/>
    <link id="TLazLogger.RegisterLogGroup"/>
    <link id="TLazLogger.LogGroupList"/>
  </seealso>
</element>
<element name="TLazLoggerLogGroupFlag.lgfAddedByParamParser">
  <short>
    Not added using RegisterLogGroup in the logger class. This is a placeholder for the enabled-state given by the user via the command line.
  </short>
</element>
<element name="TLazLoggerLogGroupFlag.lgfNoDefaultEnabledSpecified">
  <short>Registered and enabled without a default group name.</short>
</element>

<!-- set type Visibility: default -->
<element name="TLazLoggerLogGroupFlags">
  <short>Set type used to store values from the TLazLoggerLogGroupFlag enumeration.</short>
  <descr>
    <p>
      TLazLoggerLogGroupFlags is the type used for the FLags member in TLazLoggerLogGroup.
    </p>
  </descr>
  <seealso>
    <link id="TLazLoggerLogGroup"/>
  </seealso>
</element>

<!-- record type Visibility: default -->
<element name="TLazLoggerLogGroup">
  <short>Record type with information about a log group in TLazLogger.</short>
  <descr/>
  <seealso>
    <link id="TLazLogger.RegisterLogGroup"/>
    <link id="TLazLogger.LogGroupList"/>
  </seealso>
</element>

<!-- variable Visibility: default -->
<element name="TLazLoggerLogGroup.ConfigName">
  <short>Case-insensitive name for the log group.</short>
  <descr/>
  <seealso/>
</element>

<!-- variable Visibility: default -->
<element name="TLazLoggerLogGroup.Enabled">
  <short>True if the log group is enabled.</short>
  <descr/>
  <seealso/>
</element>

<!-- variable Visibility: default -->
<element name="TLazLoggerLogGroup.Flags">
  <short>Flags which indicate how the log was created, and whether it is active.</short>
  <descr/>
  <seealso/>
</element>

<!-- variable Visibility: default -->
<element name="TLazLoggerLogGroup.FOpenedIndents">
  <short>Member usesd to track the current indentation level for the log group.</short>
  <descr/>
  <seealso/>
</element>

<!-- pointer type Visibility: default -->
<element name="PLazLoggerLogGroup">
  <short>Pointer to a TLazLoggerLogGroup instance.</short>
  <descr/>
  <seealso/>
</element>

<element name="TLazLoggerLogEnabled">
  <short>Record type used to track an enabled log group.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLoggerLogEnabled.Enabled">
  <short/>
</element>
<element name="TLazLoggerLogEnabled.Group">
  <short/>
</element>

<!-- enumeration type Visibility: default -->
<element name="TLazLoggerWriteTarget">
  <short>Indicates the destination where output from a logger is written or stored.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLoggerWriteTarget.lwtNone">
  <short>Logger output is not written or stored... it is discarded.</short>
</element>
<element name="TLazLoggerWriteTarget.lwtStdOut">
  <short>Logger output is written to the stdout device.</short>
</element>
<element name="TLazLoggerWriteTarget.lwtStdErr">
  <short>Logger outout is written to the StdErr device.</short>
</element>
<element name="TLazLoggerWriteTarget.lwtTextFile">
  <short>Logger output is written to a text file.</short>
</element>

<!-- procedure type Visibility: default -->
<element name="TLazLoggerWriteEvent">
  <short>Specifies an event handler signalled to write logger output.</short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>
<element name="TLazLoggerWriteEvent.Sender">
  <short></short>
</element>
<element name="TLazLoggerWriteEvent.S">
  <short></short>
</element>
<element name="TLazLoggerWriteEvent.Handled">
  <short></short>
</element>

<!-- procedure type Visibility: default -->
<element name="TLazLoggerWidgetSetWriteEvent">
  <short></short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWidgetSetWriteEvent.Sender">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWidgetSetWriteEvent.S">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWidgetSetWriteEvent.Handled">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWidgetSetWriteEvent.Target">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWidgetSetWriteEvent.Data">
  <short></short>
</element>

<!-- class Visibility: default -->
<element name="TLazLoggerLogGroupList">
  <short>Implements a container for TLazLoggerLogGroup instances.</short>
  <descr/>
  <seealso/>
</element>

<!-- variable Visibility: private -->
<element name="TLazLoggerLogGroupList.FList"/>
<element name="TLazLoggerLogGroupList.Clear"/>
<element name="TLazLoggerLogGroupList.GetItem"/>
<element name="TLazLoggerLogGroupList.GetItem.Result"/>
<element name="TLazLoggerLogGroupList.GetItem.Index"/>
<element name="TLazLoggerLogGroupList.NewItem"/>
<element name="TLazLoggerLogGroupList.NewItem.Result"/>
<element name="TLazLoggerLogGroupList.NewItem.AConfigName"/>
<element name="TLazLoggerLogGroupList.NewItem.ADefaulEnabled"/>

<!-- function Visibility: protected -->
<element name="TLazLoggerLogGroupList.Add">
  <short>Creates and adds a new logger group in the container.</short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>
<element name="TLazLoggerLogGroupList.Add.Result">
  <short>Pointer to the TLazLoggerLogGroup instance created and added in the method.</short>
</element>
<element name="TLazLoggerLogGroupList.Add.AConfigName">
  <short>Case-insensitive name for the log group added in the method.</short>
</element>
<element name="TLazLoggerLogGroupList.Add.ADefaulEnabled">
  <short>True if enabled by default.</short>
</element>

<!-- function Visibility: protected -->
<element name="TLazLoggerLogGroupList.FindOrAdd">
  <short>
    Finds or creates a log group in the container with the specified name and enabled status.
  </short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLoggerLogGroupList.FindOrAdd.Result">
  <short>Pointer to the TLazLoggerLogGroup instance with the specified name.</short>
</element>
<element name="TLazLoggerLogGroupList.FindOrAdd.AConfigName">
  <short>Name of the log group to locate or create in the container.</short>
</element>
<element name="TLazLoggerLogGroupList.FindOrAdd.ADefaulEnabled">
  <short>Default enabled status if the log group is created.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLoggerLogGroupList.Remove">
  <short>Removes a log group from the container.</short>
  <descr>
    <p>
      Remove is overloaded to allow the group to be located using a pointer to the TLazLoggerLogGroup entry, or by a specified name. Remove calls Dispose to release  resource allocated for the log group, and frees it from the internal list in the container.No actions are performed if a log group cannot be located in the method.
    </p>
  </descr>
  <seealso/>
</element>
<element name="TLazLoggerLogGroupList.Remove.AConfigName">
  <short>Name of the log group removed from the container.</short>
</element>
<element name="TLazLoggerLogGroupList.Remove.AnEntry">
  <short>Pointer to the TLazLoggerLogGroup entry to remove from the container.</short>
</element>

<!-- constructor Visibility: public -->
<element name="TLazLoggerLogGroupList.Create">
  <short>Constructor for the class instance.</short>
  <descr>
    <p>
      Create is the constructor for the class instance. It allocates the internal TFPList instance used to store TLazLoggerLogGroup entries in the container.
    </p>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- destructor Visibility: public -->
<element name="TLazLoggerLogGroupList.Destroy">
  <short>Destructor for the class instance.</short>
  <descr>
    <p>
      Destroy is the overridden destructor for the class instance. It call Clear to remove all log group entries in the container, and frees the internal list where the log group entries are stored. Destroy calls the inherited method prior to exit.
    </p>
  </descr>
  <seealso/>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLoggerLogGroupList.Assign">
  <short>Stores values from the log group list in Src in the current class instance.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLoggerLogGroupList.Assign.Src">
  <short>Logger group list with values stored in the current class instance.</short>
</element>

<!-- function Visibility: public -->
<element name="TLazLoggerLogGroupList.IndexOf">
  <short>Gets the ordinal position in the container for the specified log group.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLoggerLogGroupList.IndexOf.Result">
  <short>Ordinal position in the container for the specified log group.</short>
</element>
<element name="TLazLoggerLogGroupList.IndexOf.AConfigName">
  <short>Name of the loag group to locate in the container.</short>
</element>
<element name="TLazLoggerLogGroupList.IndexOf.AnEntry">
  <short>Pointer to the log group to locate in the container.</short>
</element>

<!-- function Visibility: public -->
<element name="TLazLoggerLogGroupList.Find">
  <short>Gets a pointer to the log group with the specified name.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLoggerLogGroupList.Find.Result">
  <short>Pointer to the log group located in the method, or Nil when not found.</short>
</element>
<element name="TLazLoggerLogGroupList.Find.AConfigName">
  <short>Name of the log group to locate in the container.</short>
</element>

<!-- function Visibility: public -->
<element name="TLazLoggerLogGroupList.Count">
  <short>Gets the number of log groups stored in the container.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLoggerLogGroupList.Count.Result">
  <short>Number of TLazLoggerLogGroup instances stored in the container.</short>
</element>

<!-- property Visibility: public -->
<element name="TLazLoggerLogGroupList.Item">
  <short>
    Provides indexed access to log group entries in the container by their ordinal position.
  </short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>
<element name="TLazLoggerLogGroupList.Item.Index">
  <short>Ordinal position for the log group retrieved from the container.</short>
</element>

<!-- class Visibility: default -->
<element name="TLazLogger">
  <short>Defines the base class for loggers used in the Lazarus IDE.</short>
  <descr>
    <p>
      TLazLogger is a TRefCountedObject descendant which implements the base class for the logger mechanism used in the Lazarus IDE and the LCL. TLazLogger defines the interface used for the various logger classes which write their content to a specific destination. Many of the method which perform the output are empty implementations, and must be re-implemented in descendent classes which write to a file or to the debugger.
    </p>
  </descr>
  <seealso/>
</element>

<!-- private -->
<element name="TLazLogger.FLoggerCriticalSection"/>
<element name="TLazLogger.FIsInitialized"/>
<element name="TLazLogger.FMaxNestPrefixLen"/>
<element name="TLazLogger.FNestLvlIndent"/>
<element name="TLazLogger.FLogGroupList"/>
<element name="TLazLogger.FUseGlobalLogGroupList"/>
<element name="TLazLogger.SetMaxNestPrefixLen"/>
<element name="TLazLogger.SetMaxNestPrefixLen.AValue"/>
<element name="TLazLogger.SetNestLvlIndent"/>
<element name="TLazLogger.SetNestLvlIndent.AValue"/>
<element name="TLazLogger.GetLogGroupList"/>
<element name="TLazLogger.GetLogGroupList.Result"/>
<element name="TLazLogger.SetUseGlobalLogGroupList"/>
<element name="TLazLogger.SetUseGlobalLogGroupList.AValue"/>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DoInit">
  <short>Performs actions needed to initialize the logger class instance.</short>
  <descr>
    <p>
      DoInit has an empty implementation. It must be re-implemented in a descendent class to perform the actions needed for the logger type.
    </p>
  </descr>
  <seealso/>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DoFinish">
  <short>Performs actions needed to finalize the logger class instance.</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DoFinsh">
  <short>Deprecated. Use DoFinish instead.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.IncreaseIndent">
  <short>Increases the nesting level for the logger.</short>
  <descr>
    <p>
      IncreaseIndent is an overloaded method used to increment the nesting level for output from the logger. The overloaded variant allow the method to be called without parameters, or with a record for an enabled log group. Both variants have an empty implementation, and must be overridden to perform the actions needed for the output destination in the descendent logger.
    </p>
  </descr>
  <seealso/>
</element>
<element name="TLazLogger.IncreaseIndent.LogGroup">
  <short>Identifies the enabled log group for the nesting level.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DecreaseIndent">
  <short>Decreases the nesting level for the logger.</short>
  <descr>
    <p>
      DecreaseIndent is an overloaded method used to decrement the nesting level for output from the logger. The overloaded variant allow the method to be called without parameters, or with a record for an enabled log group. Both variants have an empty implementation, and must be overridden to perform the actions needed for the output destination in the descendent logger.
    </p>
  </descr>
  <seealso/>
</element>
<element name="TLazLogger.DecreaseIndent.LogGroup">
  <short>Identifies the enabled log group for the nesting level.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.IndentChanged">
  <short>Performs actions needed when the nesting level for the logger has been changed.</short>
  <descr>
    <p>
      IndentChanged has an empty implementation, andmust be overridden in a descendent class to perform the actions needed when the nesting level (Increaseindent, DecreaseIndent) has been changed.
    </p>
  </descr>
  <seealso/>
</element>

<element name="TLazLogger.GetBlockHandler">
  <short>Gets the value for the indexed BlockHandler property.</short>
  <descr/>
  <seealso>
    <link id="TLazLogger.BlockHandler"/>
  </seealso>
</element>
<element name="TLazLogger.GetBlockHandler.Result">
  <short>Value for the indexed property.</short>
</element>
<element name="TLazLogger.GetBlockHandler.AIndex">
  <short>Ordinal position for the property value retrieved in the method.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DoDbgOut">
  <short>Implements the DbgOut method for the logger type.</short>
  <descr>
    <p>
      DoDbgOut has an empty implementation, and must be overridden in a descendent class to perform any actions needed for the output destination for the logger type.
    </p>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.DoDbgOut.s">
  <short>String value written in the method.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DoDebugLn">
  <short>Implements the DebugLn method for the logger type.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLogger.DoDebugLn.s">
  <short>String value written in the method.</short>
</element>

<!-- procedure Visibility: protected -->
<element name="TLazLogger.DoDebuglnStack">
  <short>Implements the DebugLnStack method for the logger type.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLogger.DoDebuglnStack.s">
  <short>String value written in the method.</short>
</element>

<!-- function Visibility: protected -->
<element name="TLazLogger.ArgsToString">
  <short>
    Converts the specified array of values to a string which can be displayed using the output methods for the logger type.
  </short>
  <descr>
    <p>
      The return value is generated by calling DbgS or DbgSName for the value types in the array elements. For string and character types, the values are converted and cast using AnsiString, WideString, or RTTI routines as needed. An unknown value type is represented in the string using '?unknown variant?'.
    </p>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.ArgsToString.Result">
  <short>String representing the values in the specified array.</short>
</element>
<element name="TLazLogger.ArgsToString.Args">
  <short>Array of constant values converted to a string in the method.</short>
</element>

<!-- property Visibility: protected -->
<element name="TLazLogger.IsInitialized">
  <short>
    Indicates whether the Init method has already been called for the logger class instance.
  </short>
  <descr>
    <p>
      Used and updated in the Init method to determine whether DoInit is called. DoInit is not called when IsInitialized is set to <b>True</b>.
    </p>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- constructor Visibility: public -->
<element name="TLazLogger.Create">
  <short>Constructor for the class instance.</short>
  <descr>
    <p>
      Create is the constructor for the class instance. It calls the inherited method on entry, and allocates or initializes members in the class instance.It calls InitCriticalSection to allow the thread manager to set up the critical section used to protect resources in the class instance.
    </p>
  </descr>
  <seealso/>
</element>

<!-- destructor Visibility: public -->
<element name="TLazLogger.Destroy">
  <short>Destructor for the class instance.</short>
  <descr>
    <p>
      Destroy is the overridden destructor for the class instance. It calls the Finish method to finalize the logger class instance, and releases and nils the reference-counted LogGroupList property. It calls the inherited destructor prior to signalling the DonCriticalSection handler for the critical section used in the class instance.
    </p>
  </descr>
  <seealso/>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLogger.Assign">
  <short>Copies values from the logger instance in Src into the current class instance.</short>
  <descr>
    <p>
      No actions are performed in the method when Src has not been assigned.
    </p>
    <p>
      Copies values from the NestLvlIndent, MaxNestPrefixLen, and UseGlobalLogGroupList properties in Src into the current class instance. Values from LogGroupList in Src are also assigned to the current class instance.
    </p>
  </descr>
  <seealso>
    <link id="TLazLogger.NestLvlIndent"/>
    <link id="TLazLogger.MaxNestPrefixLen"/>
    <link id="TLazLogger.UseGlobalLogGroupList"/>
    <link id="TLazLogger.LogGroupList"/>
  </seealso>
</element>
<element name="TLazLogger.Assign.Src">
  <short>Logger instance with values copied in the method.</short>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLogger.Init">
  <short>Initializes the logger class instance.</short>
  <descr>
    <p>
      Ensures that the EnterCriticalSection handler in the thread manager is signalled for the critical section used to protect resources in the class instance. Calls the DoInit method, and sets IsInitialized to <b>True</b>.
    </p>
  </descr>
  <seealso>
    <link id="TLazLogger.DoInit"/>
    <link id="TLazLogger.IsInitialized"/>
  </seealso>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLogger.Finish">
  <short>FInalizes the logger class instance.</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<element name="TLazLogger.CurrentIndentLevel">
  <short>Gets the current indentation level for the logger.</short>
  <descr>
    <p>
      Always returns 0. Must be overridden in a descendent class to return a value appropriate for the logger type.
    </p>
  </descr>
  <seealso/>
</element>
<element name="TLazLogger.CurrentIndentLevel.Result">
  <short>Always returns 0.</short>
</element>

<!-- property Visibility: public -->
<element name="TLazLogger.NestLvlIndent">
  <short>Indicates the current nesting level for call to the logger class instance.</short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- property Visibility: public -->
<element name="TLazLogger.MaxNestPrefixLen">
  <short>
    Indicates the maximum length for the nexting prefix used when values are output in the logger.
  </short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- function Visibility: public -->
<element name="TLazLogger.RegisterLogGroup">
  <short>Creates a log group and optionally sets its enabled status.</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.RegisterLogGroup.Result">
  <short></short>
</element>
<element name="TLazLogger.RegisterLogGroup.AConfigName">
  <short></short>
</element>
<element name="TLazLogger.RegisterLogGroup.ADefaulEnabled">
  <short></short>
</element>

<!-- function Visibility: public -->
<element name="TLazLogger.FindOrRegisterLogGroup">
  <short>Retrieves or creates a log group for the logger.</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.FindOrRegisterLogGroup.Result">
  <short></short>
</element>
<element name="TLazLogger.FindOrRegisterLogGroup.AConfigName">
  <short></short>
</element>
<element name="TLazLogger.FindOrRegisterLogGroup.ADefaulEnabled">
  <short></short>
</element>

<!-- property Visibility: public -->
<element name="TLazLogger.LogGroupList">
  <short>Container with the group instances for the logger.</short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- property Visibility: public -->
<element name="TLazLogger.UseGlobalLogGroupList">
  <short>
    Indicates if the gloabal DebugLoggerGroupList is used as the value for the LogGroupList property.
  </short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<element name="TLazLogger.AddBlockHandler">
  <short>Adds the specified handler for blobk Enter and Exit conditions.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLogger.AddBlockHandler.AHandler">
  <short/>
</element>

<element name="TLazLogger.RemoveBlockHandler">
  <short>Removes the specifed block hander for the logger type.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLogger.RemoveBlockHandler.AHandler">
  <short/>
</element>

<element name="TLazLogger.BlockHandlerCount">
  <short>Gets the number of block handlers added to the logger type.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLogger.BlockHandlerCount.Result">
  <short>Number of block handlers for the logger type.</short>
</element>

<element name="TLazLogger.BlockHandler">
  <short>Provides indexed access to the Block handlers for the logger type.</short>
  <descr/>
  <seealso/>
</element>
<element name="TLazLogger.BlockHandler.AIndex">
  <short>Ordinal position for a block handler in the logger class instance.</short>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLogger.DebuglnStack">
  <short>Calls DoDebuglnStack to write the message in s when the logger has been enabed.</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.DebuglnStack.s">
  <short>Message written in the method.</short>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLogger.DbgOut">
  <short>Generates a log message with formatted value(s) for the specified type(s).</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.DbgOut.s">
  <short>String value for the message.</short>
</element>
<element name="TLazLogger.DbgOut.Args">
  <short>Array of constant value(s) for the message.</short>
</element>
<element name="TLazLogger.DbgOut.s1">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s2">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s3">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s4">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s5">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s6">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s7">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s8">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s9">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s10">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s11">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s12">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s13">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s14">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s15">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s16">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s17">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DbgOut.s18">
  <short>String argument for the method.</short>
</element>

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

<!-- procedure Visibility: public -->
<element name="TLazLogger.DebugLnEnter">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.DebugLnEnter.s">
  <short></short>
</element>
<element name="TLazLogger.DebugLnEnter.Args">
  <short></short>
</element>
<element name="TLazLogger.DebugLnEnter.s1">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s2">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s3">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s4">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s5">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s6">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s7">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s8">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s9">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s10">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s11">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s12">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s13">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s14">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s15">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s16">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s17">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnEnter.s18">
  <short>String argument for the method.</short>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLogger.DebugLnExit">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="TLazLogger.DebugLnExit.s">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.Args">
  <short></short>
</element>
<element name="TLazLogger.DebugLnExit.s1">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s2">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s3">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s4">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s5">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s6">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s7">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s8">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s9">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s10">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s11">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s12">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s13">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s14">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s15">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s16">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s17">
  <short>String argument for the method.</short>
</element>
<element name="TLazLogger.DebugLnExit.s18">
  <short>String argument for the method.</short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLogger.DebuglnStack.LogGroup">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLogger.DbgOut.LogGroup">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLogger.DebugLn.LogGroup">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLogger.DebugLnEnter.LogGroup">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLogger.DebugLnExit.LogGroup">
  <short></short>
</element>

<!-- class Visibility: default -->
<element name="TLazLoggerWithGroupParam">
  <short>
    Defines a logger which allows enabling / disabling groups from the command line.
  </short>
  <descr>
    <p>
      TLazLoggerWithGroupParam allows enabling / disabling groups from the command line. TLazLogger provides only storage for LogGroups, it does not need to enable/disable them, as it discards all logging anyway.
    </p>
  </descr>
  <seealso/>
</element>

<!-- variable Visibility: private -->
<element name="TLazLoggerWithGroupParam.FLogAllDefaultDisabled"/>
<element name="TLazLoggerWithGroupParam.FLogDefaultEnabled"/>
<element name="TLazLoggerWithGroupParam.FLogParamParsed"/>
<element name="TLazLoggerWithGroupParam.FParamForEnabledLogGroups"/>
<element name="TLazLoggerWithGroupParam.SetParamForEnabledLogGroups"/>
<element name="TLazLoggerWithGroupParam.SetParamForEnabledLogGroups.AValue"/>
<element name="TLazLoggerWithGroupParam.ParseParamForEnabledLogGroups"/>

<!-- constructor Visibility: public -->
<element name="TLazLoggerWithGroupParam.Create">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- procedure Visibility: public -->
<element name="TLazLoggerWithGroupParam.Assign">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWithGroupParam.Assign.Src">
  <short></short>
</element>

<!-- function Visibility: public -->
<element name="TLazLoggerWithGroupParam.RegisterLogGroup">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- function result Visibility: default -->
<element name="TLazLoggerWithGroupParam.RegisterLogGroup.Result">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWithGroupParam.RegisterLogGroup.AConfigName">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWithGroupParam.RegisterLogGroup.ADefaulEnabled">
  <short></short>
</element>

<!-- function Visibility: public -->
<element name="TLazLoggerWithGroupParam.FindOrRegisterLogGroup">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- function result Visibility: default -->
<element name="TLazLoggerWithGroupParam.FindOrRegisterLogGroup.Result">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWithGroupParam.FindOrRegisterLogGroup.AConfigName">
  <short></short>
</element>

<!-- argument Visibility: default -->
<element name="TLazLoggerWithGroupParam.FindOrRegisterLogGroup.ADefaulEnabled">
  <short></short>
</element>

<!-- property Visibility: public -->
<element name="TLazLoggerWithGroupParam.ParamForEnabledLogGroups">
  <short></short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- class Visibility: default -->
<element name="TLazLoggerNoOutput">
  <short>???</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- included from LazLoggerIntf.inc -->
<!-- procedure Visibility: default -->
<element name="DebuglnStack">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="DebuglnStack.s">
  <short></short>
</element>

<!-- procedure Visibility: default -->
<element name="DbgOut">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="DbgOut.s">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.Args">
  <short></short>
</element>
<element name="DbgOut.s1">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s2">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s3">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s4">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s5">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s6">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s7">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s8">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s9">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s10">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s11">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s12">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s13">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s14">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s15">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s16">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s17">
  <short>String argument for the routine.</short>
</element>
<element name="DbgOut.s18">
  <short>String argument for the routine.</short>
</element>

<!-- procedure Visibility: default -->
<element name="DebugLn">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="DebugLn.s">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.Args">
  <short></short>
</element>
<element name="DebugLn.s1">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s2">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s3">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s4">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s5">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s6">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s7">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s8">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s9">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s10">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s11">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s12">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s13">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s14">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s15">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s16">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s17">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLn.s18">
  <short>String argument for the routine.</short>
</element>

<!-- procedure Visibility: default -->
<element name="DebugLnEnter">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="DebugLnEnter.s">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.Args">
  <short></short>
</element>
<element name="DebugLnEnter.s1">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s2">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s3">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s4">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s5">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s6">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s7">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s8">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s9">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s10">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s11">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s12">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s13">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s14">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s15">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s16">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s17">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnEnter.s18">
  <short>String argument for the routine.</short>
</element>

<!-- procedure Visibility: default -->
<element name="DebugLnExit">
  <short></short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="DebugLnExit.s">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.Args">
  <short></short>
</element>
<element name="DebugLnExit.s1">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s2">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s3">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s4">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s5">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s6">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s7">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s8">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s9">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s10">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s11">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s12">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s13">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s14">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s15">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s16">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s17">
  <short>String argument for the routine.</short>
</element>
<element name="DebugLnExit.s18">
  <short>String argument for the routine.</short>
</element>

<!-- function Visibility: default -->
<element name="DbgS">
  <short>
    Generates a debugger message formatted with the value(s) for the specified type(s).
  </short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="DbgS.Result">
  <short>String with the formatted content for the specified value(s).</short>
</element>
<element name="DbgS.c">
  <short>Cardinal value for the message.</short>
</element>
<element name="DbgS.i">
  <short>Integer (LongInt, Int64) value for the message.</short>
</element>
<element name="DbgS.q">
  <short>QWord value for the message.</short>
</element>
<element name="DbgS.r">
  <short>TRect value for the message.</short>
</element>
<element name="DbgS.p">
  <short>Untyped pointer value for the message.</short>
</element>
<element name="DbgS.e">
  <short>Extended value for the message.</short>
</element>
<element name="DbgS.MaxDecimals">
  <short>Number of decimal places for the Extended value in the message.</short>
</element>
<element name="DbgS.b">
  <short>Boolean value for the message.</short>
</element>
<element name="DbgS.m">
  <short>TMethod value for the message. </short>
</element>
<element name="DbgS.ASize">
  <short></short>
</element>
<element name="DbgS.s">
  <short>String value for the message.</short>
</element>
<element name="DbgS.i1">
  <short>Integer value for the message.</short>
</element>
<element name="DbgS.i2">
  <short>Integer value for the message.</short>
</element>
<element name="DbgS.i3">
  <short>Integer value for the message.</short>
</element>
<element name="DbgS.i4">
  <short>Integer value for the message.</short>
</element>
<element name="DbgS.Shift">
  <short>TShiftStateEnum value for the message.</short>
</element>

<!-- function Visibility: default -->
<element name="DbgSJoin">
  <short>
    Generates a debugger message with the combined values of the specified arguments.
  </short>
  <descr/>
  <seealso/>
</element>
<element name="DbgSJoin.Result">
  <short>Message with the values in s1 and s2 combined into a single string.</short>
</element>
<element name="DbgSJoin.s1">
  <short>String value for the message.</short>
</element>
<element name="DbgSJoin.s2">
  <short>String value for the message.</short>
</element>

<!-- function Visibility: default -->
<element name="DbgSName">
  <short>
    Generates a message with the optional name and class type for the specified object.
  </short>
  <descr>
    <p>
      DbgSName generates a log message with the optional name and class type for the object in p.
    </p>
    <p>
      When p has not been assigned, the return value contains:
    </p>
    <code>'Nil'</code>
    <p>
      When p is a TComponent descendant, the return value contains a value like:
    </p>
    <code>TComponent.Name + ':' + TComponent.ClassName</code>
    <p>
      Otherwise, the return value is set to:
    </p>
    <code>TObject.ClasName</code>
    <p>
      If the LazLogger_Dummy unit has been included in the application, the  return value is an empty string.
    </p>
  </descr>
  <seealso/>
</element>
<element name="DbgSName.Result">
  <short>
    Formatted message with the optional name and class type for the specified value.
  </short>
</element>
<element name="DbgSName.p">
  <short>TObject instance examined in the routine.</short>
</element>

<!-- function Visibility: default -->
<element name="dbgObjMem">
  <short>
    Generates a message with the hexadecimal-encoded memory content for the specifed object instance.
  </short>
  <descr/>
  <seealso/>
</element>
<element name="dbgObjMem.Result">
  <short>String with hexadecimal-encoded values for the specified object instance.</short>
</element>
<element name="dbgObjMem.AnObject">
  <short>Object instance examined in the routine.</short>
</element>

<!-- function Visibility: default -->
<element name="dbghex">
  <short>
    Generates a message with the hexadecimal representation for the specified Int64 value.
  </short>
  <descr/>
  <seealso/>
</element>
<element name="dbghex.Result">
  <short>String with the hexadecimal representation for the specified value.</short>
</element>
<element name="dbghex.i">
  <short>Int64 value converted in the routine.</short>
</element>

<element name="DbgSTime">
  <short>Generates a message with the tick count for the computer system.</short>
  <descr/>
  <seealso/>
</element>
<element name="DbgSTime.Result">
  <short>String with the tick count for the system.</short>
</element>

<!-- function Visibility: default -->
<element name="dbgMemRange">
  <short>
    Generates a message with the hexadecimal-encoded content for the specified block of memory and size.
  </short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="dbgMemRange.Result">
  <short></short>
</element>
<element name="dbgMemRange.P">
  <short>Untyped pointer to the byte values examined in the routine.</short>
</element>
<element name="dbgMemRange.Count">
  <short>Number of bytes from the pointer to include in the message.</short>
</element>
<element name="dbgMemRange.Width">
  <short>
    Maximum number of columns to use in the formatted message string. A LineEnd sequence is inserted in the message when Width is exceeded.
  </short>
</element>

<!-- function Visibility: default -->
<element name="dbgMemStream">
  <short>
    Generates a message with the hexadecimal-encoded values from the specified memory stream.
  </short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>
<element name="dbgMemStream.Result">
  <short></short>
</element>
<element name="dbgMemStream.MemStream">
  <short></short>
</element>
<element name="dbgMemStream.Count">
  <short></short>
</element>

<element name="DumpExceptionBackTrace">
  <short>Write the stack trace back when an exception is detected.</short>
  <descr>
    <p>
      Calls the <var>DumpExceptionBackTrace</var> method for the logger in the <var>DebugLogger</var> variable.
    </p>
  </descr>
  <seealso>
    <!-- link id="#lazutils.lazloggerbase.DebugLogger"/ -->
    <link id="TLazLogger.DebugLn"/>
    <link id="TLazLogger.DumpExceptionBackTrace"/>
  </seealso>
</element>

<element name="operator assign(plazloggerloggroup): tlazloggerlogenabled">
  <short>
    Implements the Assign (':=') operator using a Pointer to a logger group for the  TLazLoggerLogEnabled type.
  </short>
  <descr/>
  <seealso/>
</element>

<element name="operator assign(boolean): tlazloggerlogenabled">
  <short>
    Implements the Assign (':=') operator using a Bollean argument for the  TLazLoggerLogEnabled type.
  </short>
  <descr/>
  <seealso/>
</element>

<element name="operator logicaland(tlazloggerlogenabled, tlazloggerlogenabled): tlazloggerlogenabled">
  <short>
    Implementd the logical And operator for TLazLoggerLogEnabled types.
  </short>
  <descr/>
  <seealso/>
</element>

<element name="operator logicalor(tlazloggerlogenabled, tlazloggerlogenabled): tlazloggerlogenabled">
  <short>
    Implements the logical Or operator for TLazLoggerLogEnabled types.
  </short>
  <descr/>
  <seealso/>
</element>

<!-- function Visibility: default -->
<element name="GetParamByNameCount">
  <short>
    Gets the ordinal position for the specified parameter name in the command line for the application.
  </short>
  <descr/>
  <seealso/>
</element>
<element name="GetParamByNameCount.Result">
  <short>Position for the named parameters.</short>
</element>
<element name="GetParamByNameCount.AName">
  <short>Parameter name to locate in the command line arguments.</short>
</element>

<!-- function Visibility: default -->
<element name="GetParamByName">
  <short>
    The the value for the specified parameter name from the command line for the application.
  </short>
  <descr/>
  <seealso/>
</element>
<element name="GetParamByName.Result">
  <short>Value for the named parameter, or an empty string when not found.</short>
</element>
<element name="GetParamByName.AName">
  <short>Name of the parameter to locate in the command line arguments.</short>
</element>
<element name="GetParamByName.AnIndex">
  <short></short>
</element>

<!-- function Visibility: default -->
<element name="GetDebugLoggerGroups">
  <short>Gets the value for the DebugLoggerGroups property.</short>
  <descr/>
  <seealso>
    <!-- link id="#lazutils.lazloggerbas.DebugLoggerGroups"/ -->
  </seealso>
</element>
<element name="GetDebugLoggerGroups.Result">
  <short></short>
</element>

<!-- procedure Visibility: default -->
<element name="SetDebugLoggerGroups">
  <short>Sets the value for the DebugLoggerGroups property.</short>
  <descr/>
  <seealso>
    <!-- link id="#lazutils.lazloggerbas.DebugLoggerGroups"/ -->
  </seealso>
</element>
<element name="SetDebugLoggerGroups.ALogGroups">
  <short>New value for the DebugLoggerGroups property.</short>
</element>

<!-- function Visibility: default -->
<element name="GetDebugLogger">
  <short>Gets the value for the DebugLogger property.</short>
  <descr/>
  <seealso>
    <!-- link id="#lazutils.lazloggerbase.DebugLogger"/ -->
  </seealso>
</element>
<element name="GetDebugLogger.Result">
  <short>Value for the DebugLogger property.</short>
</element>

<!-- function Visibility: default -->
<element name="GetExistingDebugLogger">
  <short>
    Gets an existing instance of the logger class type without forcing it to be created.
  </short>
  <descr/>
  <seealso/>
</element>
<element name="GetExistingDebugLogger.Result">
  <short></short>
</element>

<!-- procedure Visibility: default -->
<element name="SetDebugLogger">
  <short>Sets the value for the DebugLogger property.</short>
  <descr/>
  <seealso>
    <!-- link id="#lazutils.lazloggerbase.DebugLogger"/ -->
  </seealso>
</element>
<element name="SetDebugLogger.ALogger">
  <short>New value for the DebugLogger property.</short>
</element>

<!-- procedure Visibility: default -->
<element name="RecreateDebugLogger">
  <short>Discards an re-creates the logger class instance got the logger type.</short>
  <descr>
  </descr>
  <errors>
  </errors>
  <seealso>
  </seealso>
</element>

<!-- property Visibility: default -->
<element name="DebugLogger">
  <short>Unit property with the logger class instance for the logger type.</short>
  <descr/>
  <seealso/>
</element>

<!-- property Visibility: default -->
<element name="DebugLoggerGroups">
  <short>Unit property with the list of log groups defined for a logger class instance.</short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<element name="DbgStr">
  <short>Generates a debugger message with the content from the specified value.</short>
  <descr/>
  <seealso/>
</element>
<element name="DbgStr.Result">
  <short/>
</element>
<element name="DbgStr.StringWithSpecialChars">
  <short/>
</element>
<element name="DbgStr.StartPos">
  <short/>
</element>
<element name="DbgStr.Len">
  <short/>
</element>
<element name="DbgStr.p">
  <short/>
</element>

<element name="DbgWideStr">
  <short>Generates a debugger message with the specified WideString content.</short>
  <descr/>
  <seealso/>
</element>
<element name="DbgWideStr.Result">
  <short/>
</element>
<element name="DbgWideStr.StringWithSpecialChars">
  <short/>
</element>

<element name="DumpStack">
  <short>
    Convenience routine used to write a debugger message with the current content of the stack.
  </short>
  <descr/>
  <seealso/>
</element>

<!-- function type Visibility: default -->
<element name="TLazDebugLoggerCreator">
  <short>
    Function type used to create a TLazLogger instance for use with the Lazarus debugger.
  </short>
  <descr>
    <p>
      The return value is a TRefCountedObject object instance, and can be smart-linked away if none of the routines are used in the application.
    </p>
  </descr>
  <seealso>
  </seealso>
</element>
<element name="TLazDebugLoggerCreator.Result">
  <short>Reference-counted object for the TLazLogger instance.</short>
</element>

<!-- variable Visibility: default -->
<element name="LazDebugLoggerCreator">
  <short>
    Address of the routine used to create a TLazLogger instance for use with the Lazarus debugger.
  </short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- variable Visibility: default -->
<element name="OnWidgetSetDebugLn">
  <short>Address of the routine called to perform DebugLn output for the logger type. </short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

<!-- variable Visibility: default -->
<element name="OnWidgetSetDbgOut">
  <short>Address of the routine called to perform DbgOut output for the logger type. </short>
  <descr>
  </descr>
  <seealso>
  </seealso>
</element>

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