<?xml version="1.0" encoding="UTF-8"?>
<!--

Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus 
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0 
International public license.

https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
https://gitlab.com/freepascal.org/lazarus/lazarus/-/blob/main/docs/cc-by-sa-4-0.txt

Copyright (c) 1997-2025, by the Lazarus Development Team.

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
LCLMemManager
====================================================================
-->
<module name="LCLMemManager">
<short>
Base class for a memory manager used in the LCL and its interfaces.
</short>
<descr>
<p>
<file>lclmemmanager.pas</file> contains classes and type used to define the 
base class for various memory managers used in the Lazarus Component Library
(<b>LCL</b>) and its interfaces. An own memory manager is somewhat faster and
makes debugging and profiling easier.
</p>
<p>
<file>lclmemmanager.pas</file> is part of the Lazarus Component Library 
(<b>LCL</b>).
</p>
<p>
Author: Mattias Gaertner
</p>
</descr>

<!-- unresolved references -->
<element name="Classes"/>
<element name="Math"/>

<element name="PLCLMemManagerItem">
<short>Pointer to a TLCLMemManagerItem type.</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManagerItem">
<short>
Represents a memory manager item with a pointer to the next item in the list.
</short>
<descr>
</descr>
<seealso>
<link id="PLCLMemManagerItem"/>
</seealso>
</element>

<element name="TLCLMemManagerItem.Next">
<short>Pointer to the next item in the memory manager.</short>
<descr>
</descr>
<seealso>
<link id="PLCLMemManagerItem"/>
</seealso>
</element>

<element name="TLCLMemManager">
<short>Template for memory manager implementations.</short>
<descr>
<p>
<var>TLCLMemManager</var> is a class which provides a template for memory
manager implementations used in the LCL. It is used as a base class for
specialized memory managers in widgetset classes.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.SetMaxFreeRatio">
<short>Sets the value for the MaximumFreeCountRatio property.</short>
<seealso>
<link id="TLCLMemManager.MaximumFreeCountRatio"/>
</seealso>
</element>
<element name="TLCLMemManager.SetMaxFreeRatio.NewValue">
<short>New value for the property.</short>
</element>

<element name="TLCLMemManager.SetMinFree">
<short>Sets the value for the MinimumFreeCount property.</short>
<seealso>
<link id="TLCLMemManager.MinimumFreeCount"/>
</seealso>
</element>
<element name="TLCLMemManager.SetMinFree.NewValue">
<short>New value for the property.</short>
</element>

<element name="TLCLMemManager.FFirstFree">
<short>
Internal member with the pointer the first item in the memory manager.
</short>
</element>

<element name="TLCLMemManager.FFreeCount">
<short>Member used to store the value for the FreeCount property.</short>
</element>

<element name="TLCLMemManager.FCount">
<short>Member used to store the value for the Count property.</short>
</element>

<element name="TLCLMemManager.FMinFree">
<short>
Member used to store the value for the MinimumFreeCount property.
</short>
</element>

<element name="TLCLMemManager.FMaxFreeRatio">
<short>
Member used to store the value for the MaximumFreeCountRatio property.
</short>
</element>

<element name="TLCLMemManager.FAllocatedCount">
<short>
Member used to store the value for the AllocatedCount property.
</short>
</element>

<element name="TLCLMemManager.FFreedCount">
<short>
Member used to store the value for the FreedCount property.
</short>
</element>

<element name="TLCLMemManager.DisposeItem">
<short>
Maintains values in FreeCount and Count when the memory manager item is freed.
</short>
<descr>
</descr>
<seealso>
<link id="TLCLMemManager.FreeCount"/>
<link id="TLCLMemManager.MinimumFreeCount"/>
<link id="TLCLMemManager.MaximumFreeCountRatio"/>
<link id="TLCLMemManager.Count"/>
</seealso>
</element>
<element name="TLCLMemManager.DisposeItem.AnItem">
<short>Pointer to the memory manager item.</short>
</element>

<element name="TLCLMemManager.NewItem">
<short>
Gets a pointer to a free memory manager item, or creates a new one.
</short>
<descr>
</descr>
<seealso>
<link id="TLCLMemManager.FFirstFree"/>
<link id="TLCLMemManager.FreeCount"/>
<link id="TLCLMemManager.AllocatedCount"/>
<link id="TLCLMemManager.Count"/>
<link id="PLCLMemManagerItem"/>
</seealso>
</element>
<element name="TLCLMemManager.NewItem.Result">
<short>Pointer to the new memory manager item.</short>
</element>

<element name="TLCLMemManager.FreeFirstItem">
<short>
Frees the first item in the memory manager and maintains the list.
</short>
<descr>
</descr>
<seealso>
<link id="TLCLMemManager.FFirstFree"/>
<link id="PLCLMemManagerItem"/>
</seealso>
</element>

<element name="TLCLMemManager.MinimumFreeCount">
<short>
Minimum block size that can be freed in the memory manager.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.MaximumFreeCountRatio">
<short>
Threshold which determines if the memory manager marks a block or frees it.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.Count">
<short>
Total number of items in the memory manager list.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.FreeCount">
<short>
Number of items marked as free in the list.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.AllocatedCount">
<short>
Number of items allocated in the memory manager list.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.FreedCount">
<short>
Number of freed memory blocks in the list.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLMemManager.Clear">
<short>
Frees all items in the memory manager list.
</short>
<descr>
<p>
Called from the destructor for the class instance.
</p>
</descr>
<errors>
</errors>
<seealso>
<link id="TLCLMemManager.FreeFirstItem"/>
<link id="TLCLMemManager.FreeCount"/>
<link id="TLCLMemManager.FreedCount"/>
</seealso>
</element>

<element name="TLCLMemManager.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Calls the inherited constructor on entry, and sets the default values for
properties in the class instance.
</p>
</descr>
<seealso>
<link id="TLCLMemManager.Destroy"/>
</seealso>
</element>

<element name="TLCLMemManager.Destroy">
<short>
Destructor for the class instance.
</short>
<descr>
<p>
Calls Clear to remove all items in the memory manager list. Calls the 
inherited
destructor prior to exit.
</p>
</descr>
<errors>
</errors>
<seealso>
</seealso>
</element>

<element name="TLCLEnumItemsMethod">
<short>
Defines an object procedure type used to enumerate memory manager items.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<element name="TLCLEnumItemsMethod.Item">
<short>Pointer to a memory manager item enumerated in the procedure.</short>
</element>

<element name="TLCLNonFreeMemManager">
<short>A memory manager for records without freeing.</short>
<descr>
</descr>
<errors>
</errors>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.FItemSize">
<short/>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.FItems">
<short/>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.FCurItem">
<short/>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.FEndItem">
<short/>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.FCurSize">
<short/>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.FFirstSize">
<short/>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.ClearOnCreate">
<short>
Public member used to control zero-filling memory allocated for items.
</short>
<descr>
Used in the NewItem method.
</descr>
<seealso>
<link id="TLCLNonFreeMemManager.NewItem"/>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.ItemSize">
<short>
Size of the memory allocated for each item in the list.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.Clear">
<short>
Frees memory allocated to items, and frees the list.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
Sets ItemSize to the value specified in TheItemSize, and sets the size of the
first item to 4 times the ItemSize value.
</p>
</descr>
<errors>
</errors>
<seealso>
</seealso>
</element>
<element name="TLCLNonFreeMemManager.Create.TheItemSize">
<short/>
</element>

<element name="TLCLNonFreeMemManager.Destroy">
<short>
Destructor for the class instance.
</short>
<descr>
<p>
Calls Clear on entry.
Calls the inherited destructor prior to exit.
</p>
</descr>
<seealso>
<link id="TLCLNonFreeMemManager.Create"/>
</seealso>
</element>

<element name="TLCLNonFreeMemManager.NewItem">
<short>Gets a Pointer to a new item in the list.</short>
<descr>
</descr>
<seealso>
<link id="TLCLNonFreeMemManager.ClearOnCreate"/>
<link id="TLCLNonFreeMemManager.ItemSize"/>
</seealso>
</element>
<element name="TLCLNonFreeMemManager.NewItem.Result">
<short>Pointer to the item added to the internal list.</short>
</element>

<element name="TLCLNonFreeMemManager.EnumerateItems">
<short>
Enumerates items in the list using the specified object procedure.
</short>
<descr>
</descr>
<seealso>
<link id="TLCLNonFreeMemManager.ItemSize"/>
<link id="TLCLEnumItemsMethod"/>
</seealso>
</element>
<element name="TLCLNonFreeMemManager.EnumerateItems.Method">
<short>Object procedure used to enumerate the items in the list.</short>
</element>

<element name="TStreamSizeType">
<short>
Alias to the type used for stream sizes.
</short>
<descr>
<p>
<var>PtrInt</var> for FPC 2.04.02 or higher.
<var>LongInt</var> for versions prior to FPC 2.04.02.
</p>
</descr>
<seealso/>
</element>

<element name="TExtMemoryStream">
<short>
Implements an extended memory stream with a minimum growth factor.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TExtMemoryStream.Realloc">
<short>
Reallocates memory for the stream using the specified capacity.
</short>
<descr>
<p>
<var>Realloc</var> is an overridden method in <var>TExtMemoryStream</var>.
It ensures that the new <var>Capacity</var> is at least 25% larger than the
existing Capacity. Realloc calls the inherited method to re-allocate memory 
to the
size needed.
</p>
</descr>
<seealso>
<link id="TExtMemoryStream.Capacity"/>
<link id="#rtl.classes.TMemoryStream">TMemoryStream</link>
</seealso>
</element>
<element name="TExtMemoryStream.Realloc.Result">
<short>Pointer to the newly allocated memory for the stream.</short>
</element>
<element name="TExtMemoryStream.Realloc.NewCapacity">
<short>New capacity requested in the method.</short>
</element>

<element name="TExtMemoryStream.Capacity">
<short>Size of the allocated memory for the stream.</short>
<descr>
<p>
<var>Capacity</var> is a public <var>PtrInt</var> property in TExtMemoryStream
which contains the memory size allocated for the stream. Setting a new value 
for
the property causes the <var>Realloc</var> method to be called to re-allocate
memory to the requested value.
</p>
</descr>
<seealso>
<link id="TExtMemoryStream.Realloc"/>
</seealso>
</element>

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