lazarus/docs/xml/rtl/system.xml
mattias 317ddf7974 docs: system.xml: fixed < >
git-svn-id: trunk@32637 -
2011-10-03 00:13:26 +00:00

12027 lines
440 KiB
XML

<?xml version="1.0"?>
<fpdoc-descriptions>
<!--
$Id: system.xml,v 1.6 2005/05/07 09:41:09 michael Exp $
This file is part of the FPC documentation.
Copyright (C) 1997, by Michael Van Canneyt
The FPC documentation is free text; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The FPC Documentation is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the FPC documentation; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
-->
<package name="rtl">
<module name="system">
<short>The system unit</short>
<!-- \FPCexampledir{refex} -->
<descr>
<p>The system unit contains the standard supported functions of Free Pascal. It is the
same for all platforms. Basically it is the same as the system unit provided
with Borland or Turbo Pascal.
</p>
<p>Functions are listed in alphabetical order. Arguments of functions or
procedures that are optional are put between square brackets.
</p>
<p>The pre-defined constants and variables are listed in the first section.
The second section contains an overview of all functions, grouped by
functionality, and the last section contains the supported functions
and procedures.
</p>
</descr>
<topic name="FileFunctions">
<short>File handling functions</short>
<descr>
<p>Functions concerning input and output from and to file.
</p>
<table>
<th>
<td>Name</td>
<td>Description</td>
</th>
<tr>
<td>
<link id="Append"/>
</td>
<td>Open a file in append mode</td>
</tr>
<tr>
<td>
<link id="Assign"/>
</td>
<td>Assign a name to a file</td>
</tr>
<tr>
<td>
<link id="Blockread"/>
</td>
<td>Read data from a file into memory</td>
</tr>
<tr>
<td>
<link id="Blockwrite"/>
</td>
<td>Write data from memory to a file</td>
</tr>
<tr>
<td>
<link id="Close"/>
</td>
<td>Close a file</td>
</tr>
<tr>
<td>
<link id="Eof"/>
</td>
<td>Check for end of file</td>
</tr>
<tr>
<td>
<link id="Eoln"/>
</td>
<td>Check for end of line</td>
</tr>
<tr>
<td>
<link id="Erase"/>
</td>
<td>Delete file from disk</td>
</tr>
<tr>
<td>
<link id="Filepos"/>
</td>
<td>Position in file</td>
</tr>
<tr>
<td>
<link id="Filesize"/>
</td>
<td>Size of file</td>
</tr>
<tr>
<td>
<link id="Flush"/>
</td>
<td>Write file buffers to disk</td>
</tr>
<tr>
<td>
<link id="IOresult"/>
</td>
<td>Return result of last file IO operation</td>
</tr>
<tr>
<td>
<link id="Read"/>
</td>
<td>Read from file into variable</td>
</tr>
<tr>
<td>
<link id="Readln"/>
</td>
<td>Read from file into variable and goto next line</td>
</tr>
<tr>
<td>
<link id="Rename"/>
</td>
<td>Rename file on disk</td>
</tr>
<tr>
<td>
<link id="Reset"/>
</td>
<td>Open file for reading</td>
</tr>
<tr>
<td>
<link id="Rewrite"/>
</td>
<td>Open file for writing</td>
</tr>
<tr>
<td>
<link id="Seek"/>
</td>
<td>Set file position</td>
</tr>
<tr>
<td>
<link id="SeekEof"/>
</td>
<td>Set file position to end of file</td>
</tr>
<tr>
<td>
<link id="SeekEoln"/>
</td>
<td>Set file position to end of line</td>
</tr>
<tr>
<td>
<link id="SetTextBuf"/>
</td>
<td>Set size of file buffer</td>
</tr>
<tr>
<td>
<link id="Truncate"/>
</td>
<td>Truncate the file at position</td>
</tr>
<tr>
<td>
<link id="Write"/>
</td>
<td>Write variable to file</td>
</tr>
<tr>
<td>
<link id="WriteLn"/>
</td>
<td>Write variable to file and append newline</td>
</tr>
</table>
</descr>
</topic>
<topic name="MemoryFunctions">
<short>Memory management functions</short>
<descr>
<p>Functions concerning memory issues.
</p>
<table>
<th>
<td>Name</td>
<td>Description</td>
</th>
<tr>
<td>
<link id="Addr"/>
</td>
<td>Return address of variable</td>
</tr>
<tr>
<td>
<link id="Assigned"/>
</td>
<td>Check if a pointer is valid</td>
</tr>
<tr>
<td>
<link id="CompareByte"/>
</td>
<td>Compare 2 memory buffers byte per byte</td>
</tr>
<tr>
<td>
<link id="CompareChar"/>
</td>
<td>Compare 2 memory buffers byte per byte</td>
</tr>
<tr>
<td>
<link id="CompareDWord"/>
</td>
<td>Compare 2 memory buffers byte per byte</td>
</tr>
<tr>
<td>
<link id="CompareWord"/>
</td>
<td>Compare 2 memory buffers byte per byte</td>
</tr>
<tr>
<td>
<link id="CSeg"/>
</td>
<td>Return code segment</td>
</tr>
<tr>
<td>
<link id="Dispose"/>
</td>
<td>Free dynamically allocated memory</td>
</tr>
<tr>
<td>
<link id="DSeg"/>
</td>
<td>Return data segment</td>
</tr>
<tr>
<td>
<link id="FillByte"/>
</td>
<td>Fill memory region with 8-bit pattern</td>
</tr>
<tr>
<td>
<link id="FillChar"/>
</td>
<td>Fill memory region with certain character</td>
</tr>
<tr>
<td>
<link id="FillDWord"/>
</td>
<td>Fill memory region with 32-bit pattern</td>
</tr>
<tr>
<td>
<link id="FillQWord"/>
</td>
<td>Fill memory region with 64-bit pattern</td>
</tr>
<tr>
<td>
<link id="FillWord"/>
</td>
<td>Fill memory region with 16-bit pattern</td>
</tr>
<tr>
<td>
<link id="Freemem"/>
</td>
<td>Release allocated memory</td>
</tr>
<tr>
<td>
<link id="Getmem"/>
</td>
<td>Allocate new memory</td>
</tr>
<tr>
<td>
<link id="GetMemoryManager"/>
</td>
<td>Return current memory manager</td>
</tr>
<tr>
<td>
<link id="High"/>
</td>
<td>Return highest index of open array or enumerated</td>
</tr>
<tr>
<td>
<link id="IndexByte"/>
</td>
<td>Find byte-sized value in a memory range</td>
</tr>
<tr>
<td>
<link id="IndexChar"/>
</td>
<td>Find char-sized value in a memory range</td>
</tr>
<tr>
<td>
<link id="IndexDWord"/>
</td>
<td>Find DWord-sized (32-bit) value in a memory range</td>
</tr>
<tr>
<td>
<link id="IndexQWord"/>
</td>
<td>Find QWord-sized value in a memory range</td>
</tr>
<tr>
<td>
<link id="IndexWord"/>
</td>
<td>Find word-sized value in a memory range</td>
</tr>
<tr>
<td>
<link id="IsMemoryManagerSet"/>
</td>
<td>Is the memory manager set</td>
</tr>
<tr>
<td>
<link id="Low"/>
</td>
<td>Return lowest index of open array or enumerated</td>
</tr>
<tr>
<td>
<link id="Move"/>
</td>
<td>Move data from one location in memory to another</td>
</tr>
<tr>
<td>
<link id="MoveChar0">MoveChar0</link>
</td>
<td>Move data till first zero character</td>
</tr>
<tr>
<td>
<link id="New"/>
</td>
<td>Dynamically allocate memory for variable</td>
</tr>
<tr>
<td>
<link id="Ofs"/>
</td>
<td>Return offset of variable</td>
</tr>
<tr>
<td>
<link id="Ptr"/>
</td>
<td>Combine segment and offset to pointer</td>
</tr>
<tr>
<td>
<link id="ReAllocMem"/>
</td>
<td>Resize a memory block on the heap</td>
</tr>
<tr>
<td>
<link id="Seg"/>
</td>
<td>Return segment</td>
</tr>
<tr>
<td>
<link id="SetMemoryManager"/>
</td>
<td>Set a memory manager</td>
</tr>
<tr>
<td>
<link id="Sptr"/>
</td>
<td>Return current stack pointer</td>
</tr>
<tr>
<td>
<link id="SSeg"/>
</td>
<td>Return stack segment register value</td>
</tr>
</table>
</descr>
</topic>
<topic name="MathematicalFunctions">
<short>Mathematical routines</short>
<descr>
<p>Functions connected to calculating and coverting numbers.
</p>
<table>
<th>
<td>Name</td>
<td>Description</td>
</th>
<tr>
<td>
<link id="Abs"/>
</td>
<td>Calculate absolute value</td>
</tr>
<tr>
<td>
<link id="Arctan"/>
</td>
<td>Calculate inverse tangent</td>
</tr>
<tr>
<td>
<link id="Cos"/>
</td>
<td>Calculate cosine of angle</td>
</tr>
<tr>
<td>
<link id="Dec"/>
</td>
<td>Decrease value of variable</td>
</tr>
<tr>
<td>
<link id="Exp"/>
</td>
<td>Exponentiate</td>
</tr>
<tr>
<td>
<link id="Frac"/>
</td>
<td>Return fractional part of floating point value</td>
</tr>
<tr>
<td>
<link id="Hi"/>
</td>
<td>Return high byte/word of value</td>
</tr>
<tr>
<td>
<link id="Inc"/>
</td>
<td>Increase value of variable</td>
</tr>
<tr>
<td>
<link id="Int"/>
</td>
<td>Calculate integer part of floating point value</td>
</tr>
<tr>
<td>
<link id="Ln"/>
</td>
<td>Calculate logarithm</td>
</tr>
<tr>
<td>
<link id="Lo"/>
</td>
<td>Return low byte/word of value</td>
</tr>
<tr>
<td>
<link id="Odd"/>
</td>
<td>Is a value odd or even ? </td>
</tr>
<tr>
<td>
<link id="Pi"/>
</td>
<td>Return the value of pi</td>
</tr>
<tr>
<td>
<link id="Power"/>
</td>
<td>Raise float to integer power</td>
</tr>
<tr>
<td>
<link id="Random"/>
</td>
<td>Generate random number</td>
</tr>
<tr>
<td>
<link id="Randomize"/>
</td>
<td>Initialize random number generator</td>
</tr>
<tr>
<td>
<link id="Round"/>
</td>
<td>Round floating point value to nearest integer number</td>
</tr>
<tr>
<td>
<link id="Sin"/>
</td>
<td>Calculate sine of angle</td>
</tr>
<tr>
<td>
<link id="Sqr"/>
</td>
<td>Calculate the square of a value</td>
</tr>
<tr>
<td>
<link id="Sqrt"/>
</td>
<td>Calculate the square root of a value</td>
</tr>
<tr>
<td>
<link id="Swap"/>
</td>
<td>Swap high and low bytes/words of a variable</td>
</tr>
<tr>
<td>
<link id="Trunc"/>
</td>
<td>Truncate a floating point value</td>
</tr>
</table>
</descr>
</topic>
<topic name="StringFunctions">
<short>String handling</short>
<descr>
<p>All things connected to string handling.
</p>
<table>
<th>
<td>Name</td>
<td>Description</td>
</th>
<tr>
<td>
<link id="BinStr"/>
</td>
<td>Construct binary representation of integer</td>
</tr>
<tr>
<td>
<link id="Chr"/>
</td>
<td>Convert ASCII code to character</td>
</tr>
<tr>
<td>
<link id="Concat"/>
</td>
<td>Concatenate two strings</td>
</tr>
<tr>
<td>
<link id="Copy"/>
</td>
<td>Copy part of a string</td>
</tr>
<tr>
<td>
<link id="Delete"/>
</td>
<td>Delete part of a string</td>
</tr>
<tr>
<td>
<link id="HexStr"/>
</td>
<td>Construct hexadecimal representation of integer</td>
</tr>
<tr>
<td>
<link id="Insert"/>
</td>
<td>Insert one string in another</td>
</tr>
<tr>
<td>
<link id="Length"/>
</td>
<td>Return length of string</td>
</tr>
<tr>
<td>
<link id="Lowercase"/>
</td>
<td>Convert string to all-lowercase</td>
</tr>
<tr>
<td>
<link id="OctStr"/>
</td>
<td>Construct octal representation of integer</td>
</tr>
<tr>
<td>
<link id="Pos"/>
</td>
<td>Calculate position of one string in another</td>
</tr>
<tr>
<td>
<link id="SetLength"/>
</td>
<td>Set length of a string</td>
</tr>
<tr>
<td>
<link id="SetString"/>
</td>
<td>Set contents and length of a string</td>
</tr>
<tr>
<td>
<link id="Str"/>
</td>
<td>Convert number to string representation</td>
</tr>
<tr>
<td>
<link id="StringOfChar"/>
</td>
<td>Create string consisting of a number of characters</td>
</tr>
<tr>
<td>
<link id="Upcase"/>
</td>
<td>Convert string to all-uppercase</td>
</tr>
<tr>
<td>
<link id="Val"/>
</td>
<td>Convert string to number</td>
</tr>
</table>
</descr>
</topic>
<topic name="OSfunctions">
<short>Operating System functions</short>
<descr>
<p>Functions that are connected to the operating system.
</p>
<table>
<th>
<td>Name</td>
<td>Description</td>
</th>
<tr>
<td>
<link id="Chdir"/>
</td>
<td>Change working directory</td>
</tr>
<tr>
<td>
<link id="Getdir"/>
</td>
<td>Return current working directory</td>
</tr>
<tr>
<td>
<link id="Halt"/>
</td>
<td>Halt program execution</td>
</tr>
<tr>
<td>
<link id="Paramcount"/>
</td>
<td>Number of parameters with which program was called</td>
</tr>
<tr>
<td>
<link id="Paramstr"/>
</td>
<td>Retrieve parameters with which program was called</td>
</tr>
<tr>
<td>
<link id="Mkdir"/>
</td>
<td>Make a directory</td>
</tr>
<tr>
<td>
<link id="Rmdir"/>
</td>
<td>Remove a directory</td>
</tr>
<tr>
<td>
<link id="Runerror"/>
</td>
<td>Abort program execution with error condition</td>
</tr>
</table>
</descr>
</topic>
<topic name="MiscellaneousFunctions">
<short>Miscellaneous functions</short>
<descr>
<p>Functions that do not belong in one of the other categories.
</p>
<table>
<th>
<td>Name</td>
<td>Description</td>
</th>
<tr>
<td>
<link id="Assert"/>
</td>
<td>Conditionally abort program with error</td>
</tr>
<tr>
<td>
<link id="Break"/>
</td>
<td>Abort current loop</td>
</tr>
<tr>
<td>
<link id="Continue"/>
</td>
<td>Next cycle in current loop</td>
</tr>
<tr>
<td>
<link id="Exclude"/>
</td>
<td>Exclude an element from a set</td>
</tr>
<tr>
<td>
<link id="Exit"/>
</td>
<td>Exit current function or procedure</td>
</tr>
<tr>
<td>
<link id="Include"/>
</td>
<td>Include an element into a set</td>
</tr>
<tr>
<td>
<link id="LongJmp"/>
</td>
<td>Jump to execution point</td>
</tr>
<tr>
<td>
<link id="Ord"/>
</td>
<td>Return ordinal value of enumerated type</td>
</tr>
<tr>
<td>
<link id="Pred"/>
</td>
<td>Return previous value of ordinal type</td>
</tr>
<tr>
<td>
<link id="SetJmp"/>
</td>
<td>Mark execution point for jump</td>
</tr>
<tr>
<td>
<link id="SizeOf"/>
</td>
<td>Return size of variable or type</td>
</tr>
<tr>
<td>
<link id="Succ"/>
</td>
<td>Return next value of ordinal type</td>
</tr>
</table>
</descr>
</topic>
<element name="Abs">
<short>Calculate absolute value</short>
<descr>
<var>Abs</var> returns the absolute value of a variable. The result of the
function has the same type as its argument, which can be any numerical
type.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Round"/>
</seealso>
<example file="refex/ex1"/>
</element>
<element name="Addr">
<short>Return address of a variable</short>
<descr>
<var>Addr</var> returns a pointer to its argument, which can be any type, or a
function or procedure name. The returned pointer isn't typed.
The same result can be obtained by the <var>@</var> operator, which can return a
typed pointer (see the programmer's guide).
</descr>
<errors>None
</errors>
<seealso>
<link id="SizeOf"/>
</seealso>
<example file="refex/ex2"/>
</element>
<element name="Append">
<short>Open a file in append mode</short>
<descr>
<var>Append</var> opens an existing file in append mode. Any data written to
<var>F</var> will be appended to the file. Only text files can be opened in
append mode. After a call to <var>Append</var>, the file <var>F</var> becomes
write-only.
File sharing is not taken into account when calling <var>Append</var>.
</descr>
<errors>If the file doesn't exist when appending, a run-time error will be generated.
This behaviour has changed on Windows and Linux platforms, where in versions
prior to 1.0.6, the file would be created in append mode.
</errors>
<seealso>
<link id="Rewrite"/>
<link id="Close"/>
<link id="Reset"/>
</seealso>
<example file="refex/ex3"/>
</element>
<element name="Arctan">
<short>Calculate inverse tangent</short>
<descr>
<var>Arctan</var> returns the Arctangent of <var>X</var>, which can be any Real type.
The resulting angle is in radial units.
</descr>
<errors>None
</errors>
<seealso>
<link id="Sin"/>
<link id="Cos"/>
</seealso>
<example file="refex/ex4"/>
</element>
<element name="Assert">
<short>Check validity of a given condition.</short>
<descr>With assertions on, <var>Assert</var> tests if <var>expr</var> is
false, and if so, aborts the application with a Runtime error
227 and an optional error message in <var>msg</var>.
If <var>expr</var> is true, program execution continues normally.
If assertions are not enabled at compile time, this routine does
nothing, and no code is generated for the <var>Assert</var> call.
Enabling and disabling assertions at compile time is done via
the <var>\$C</var> or <var>\$ASSERTIONS</var> compiler switches. These are
global switches.
The default behavior of the assert call can be changed by
setting a new handler in the <var>AssertErrorProc</var> variable.
Sysutils overrides the default handler to raise a <var>EAssertionFailed</var>
exception.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Halt"/>
<link id="Runerror"/>
</seealso>
</element>
<element name="Assign">
<short>Assign a name to a file</short>
<descr>
<var>Assign</var> assigns a name to <var>F</var>, which can be any file type.
This call doesn't open the file, it just assigns a name to a file variable,
and marks the file as closed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Reset"/>
<link id="Rewrite"/>
<link id="Append"/>
</seealso>
<example file="refex/ex5"/>
</element>
<element name="Assigned">
<short>Check if a pointer is valid</short>
<descr>
<var>Assigned</var> returns <var>True</var> if <var>P</var> is non-nil
and retuns <var>False</var> of <var>P</var> is nil.
The main use of Assigned is that Procedural variables, method variables and
class-type variables also can be passed to <var>Assigned</var>.
</descr>
<errors>None
</errors>
<seealso>
<link id="New"/>
</seealso>
<example file="refex/ex96"/>
</element>
<element name="BinStr">
<short>Convert integer to string with binary representation.</short>
<descr>
<var>BinStr</var> returns a string with the binary representation
of <var>Value</var>. The string has at most <var>cnt</var> characters.
(i.e. only the <var>cnt</var> rightmost bits are taken into account)
To have a complete representation of any longint-type value, 32
bits are needed, i.e. <var>cnt=32</var>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Str"/>
<link id="Val"/>
<link id="HexStr"/>
<link id="OctStr"/>
</seealso>
<example file="refex/ex82"/>
</element>
<element name="Blockread">
<short>Read data from an untyped file into memory</short>
<descr>
<var>Blockread</var> reads <var>count</var> or less records from file <var>F</var>. A
record is a block of bytes with size specified by the <link id="Rewrite"/> or
<link id="Reset"/> statement.
The result is placed in <var>Buffer</var>, which must contain enough room for
<var>Count</var> records. The function cannot read partial records.
If <var>Result</var> is specified, it contains the number of records actually
read. If <var>Result</var> isn't specified, and less than <var>Count</var> records were
read, a run-time error is generated. This behavior can be controlled by the
<var>{$I}</var> switch.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Blockwrite"/>
<link id="Close"/>
<link id="Reset"/>
<link id="Assign"/>
</seealso>
<example file="refex/ex6"/>
</element>
<element name="Blockwrite">
<short>Write data from memory to an untyped file</short>
<descr>
<var>BlockWrite</var> writes <var>count</var> records from <var>buffer</var> to the file
<var>F</var>.A record is a block of bytes with size specified by the <link id="Rewrite"/> or
<link id="Reset"/> statement.
If the records couldn't be written to disk, a run-time error is generated.
This behavior can be controlled by the <var>{$I}</var> switch.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Blockread"/>
<link id="Close"/>
<link id="Rewrite"/>
<link id="Assign"/>
</seealso>
</element>
For the example, see <link id="Blockread"/>.
<element name="Break">
<short>Exit current loop construct.</short>
<descr>
<p>
<var>Break</var> jumps to the statement following the end of the current
repetitive statement. The code between the <var>Break</var> call and
the end of the repetitive statement is skipped.
The condition of the repetitive statement is NOT evaluated.
</p>
<p>This can be used with <var>For</var>, var{repeat} and <var>While</var> statements.
</p>
<p>Note that while this is a procedure, <var>Break</var> is a reserved word
and hence cannot be redefined.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Continue"/>
<link id="Exit"/>
</seealso>
<example file="refex/ex87"/>
</element>
<element name="Chdir">
<short>Change current working directory.</short>
<descr>
<var>Chdir</var> changes the working directory of the process to <var>S</var>.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Mkdir"/>
<link id="Rmdir"/>
</seealso>
<example file="refex/ex7"/>
</element>
<element name="Chr">
<short>Convert byte value to character value</short>
<descr>
<p>
<var>Chr</var> returns the character which has ASCII value <var>X</var>.
</p>
<p>Historical note:
</p>
<p>Originally, Pascal did not have typecasts and chr was a necessary function in
order to do certain operations on ASCII values of characters. With the arrival of
typecasting a generic approach became possible, making chr mostly obselete.
However, chr is not considered deprecated and remains in wide use today.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Ord"/>
<link id="Str"/>
</seealso>
<example file="refex/ex8"/>
</element>
<element name="Close">
<short>Close a file</short>
<descr>
<var>Close</var> flushes the buffer of the file <var>F</var> and closes <var>F</var>.
After a call to <var>Close</var>, data can no longer be read from or written to
<var>F</var>.
To reopen a file closed with <var>Close</var>, it isn't necessary to assign the
file again. A call to <link id="Reset"/> or <link id="Rewrite"/> is sufficient.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Assign"/>
<link id="Reset"/>
<link id="Rewrite"/>
<link id="Flush"/>
</seealso>
<example file="refex/ex9"/>
</element>
<element name="CompareByte">
<short>Compare 2 memory buffers byte per byte</short>
<descr>
<p>
<var>CompareByte</var> compares two memory regions <var>buf1</var>,<var>buf2</var> on a
byte-per-byte basis for a total of <var>len</var> bytes.
</p>
<p>The function returns one of the following values:</p>
<dl>
<dt>less than 0</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different bytes
in the first <var>len</var> bytes, and the first such byte is smaller in <var>buf1</var>
than the byte at the same position in <var>buf2</var>.</dd>
<dt>0</dt>
<dd>if the first <var>len</var> bytes in <var>buf1</var> and <var>buf2</var> are
equal.</dd>
<dt>greater than 0</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different bytes
in the first <var>len</var> bytes, and the first such byte is larger in <var>buf1</var>
than the byte at the same position in <var>buf2</var>.</dd>
</dl>
</descr>
<errors>None.
</errors>
<seealso>
<link id="CompareChar"/>
<link id="CompareChar0"/>
<link id="CompareWord"/>
<link id="CompareDWord"/>
</seealso>
<example file="refex/ex99"/>
</element>
<element name="CompareChar">
<short>ompare 2 memory buffers character per character</short>
<descr>
<p>
<var>CompareChar</var> compares two memory regions <var>buf1</var>,<var>buf2</var> on a
character-per-character basis for a total of <var>len</var> characters.
</p>
<p>The <var>CompareChar0</var> variant compares <var>len</var> bytes, or until
a zero character is found.
</p>
<p>The function returns one of the following values:
</p>
<dl>
<dt>-1</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different characters
in the first <var>len</var> positions, and the first such character is smaller in <var>buf1</var>
than the character at the same position in <var>buf2</var>.
</dd>
<dt>0</dt>
<dd>if the first <var>len</var> characters in <var>buf1</var> and <var>buf2</var> are
equal.
</dd>
<dt>1</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different characters
in the first <var>len</var> positions, and the first such character is larger in
<var>buf1</var> than the character at the same position in <var>buf2</var>.
</dd>
</dl>
</descr>
<errors>None.
</errors>
<seealso>
<link id="CompareByte"/>
<link id="CompareChar0"/>
<link id="CompareWord"/>
<link id="CompareDWord"/>
</seealso>
<example file="refex/ex100"/>
</element>
<element name="CompareDWord">
<short>Compare 2 memory buffers DWord per DWord</short>
<descr>
<p>
<var>CompareDWord</var> compares two memory regions <var>buf1</var>,<var>buf2</var> on a
DWord-per-DWord basis for a total of <var>len</var> DWords. (A DWord is 4 bytes).
</p>
<p>The function returns one of the following values:
</p>
<dl>
<dt>-1</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different DWords
in the first <var>len</var> DWords, and the first such DWord is smaller in <var>buf1</var>
than the DWord at the same position in <var>buf2</var>.
</dd>
<dt>0</dt>
<dd>if the first <var>len</var> DWords in <var>buf1</var> and <var>buf2</var> are
equal.
</dd>
<dt>1</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different DWords
in the first <var>len</var> DWords, and the first such DWord is larger in <var>buf1</var>
than the DWord at the same position in <var>buf2</var>.
</dd>
</dl>
</descr>
<errors>None.
</errors>
<seealso>
<link id="CompareChar"/>
<link id="CompareByte"/>
<link id="CompareWord"/>,
</seealso>
<example file="refex/ex101"/>
</element>
<element name="CompareWord">
<short>Compare 2 memory buffers word per word</short>
<descr>
<p>
<var>CompareWord</var> compares two memory regions <var>buf1</var>,<var>buf2</var> on a
Word-per-Word basis for a total of <var>len</var> Words. (A Word is 2 bytes).
</p>
<p>The function returns one of the following values:
</p>
<dl>
<dt>-1</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different Words
in the first <var>len</var> Words, and the first such Word is smaller in <var>buf1</var>
than the Word at the same position in <var>buf2</var>.
</dd>
<dt>0</dt>
<dd>if the first <var>len</var> Words in <var>buf1</var> and <var>buf2</var> are
equal.
</dd>
<dt>1</dt>
<dd>if <var>buf1</var> and <var>buf2</var> contain different Words
in the first <var>len</var> Words, and the first such Word is larger in <var>buf1</var>
than the Word at the same position in <var>buf2</var>.
</dd>
</dl>
</descr>
<errors>None.
</errors>
<seealso>
<link id="CompareChar"/>
<link id="CompareByte"/>
<link id="CompareDWord"/>,
</seealso>
<example file="refex/ex102"/>
</element>
<element name="Concat">
<short>Append one string to another.</short>
<descr>
<var>Concat</var> concatenates the strings <var>S1</var>,<var>S2</var> etc. to one long
string. The resulting string is truncated at a length of 255 bytes.
The same operation can be performed with the <var>+</var> operation.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Copy"/>
<link id="Delete"/>
<link id="Insert"/>
<link id="Pos"/>
<link id="Length"/>
</seealso>
<example file="refex/ex10"/>
</element>
<element name="Continue">
<short>Continue with next loop cycle.</short>
<descr>
<p>
<var>Continue</var> jumps to the end of the current repetitive statement.
The code between the <var>Continue</var> call and the end of the repetitive
statement is skipped. The condition of the repetitive statement is then
checked again.
</p>
<p>This can be used with <var>For</var>, <var>repeat</var> and <var>While</var> statements.
</p>
<p>Note that while this is a procedure, <var>Continue</var> is a reserved word
and hence cannot be redefined.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Break"/>
<link id="Exit"/>
</seealso>
<example file="refex/ex86"/>
</element>
<element name="Copy">
<short>Copy part of a string.</short>
<descr>
<p>
<var>Copy</var> returns a string which is a copy if the <var>Count</var> characters
in <var>S</var>, starting at position <var>Index</var>. If <var>Count</var> is larger than
the length of the string <var>S</var>, the result is truncated.
If <var>Index</var> is larger than the length of the string <var>S</var>, then an
empty string is returned. <var>Index</var> is 1-based.
</p>
<p>For dynamical arrays, Copy returns a new dynamical array of the same type as
the original one, and copies <var>Count</var> elements from the old array,
starting at position <var>Index</var>.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Delete"/>
<link id="Insert"/>
<link id="Pos"/>
</seealso>
<example file="refex/ex11"/>
</element>
<element name="Cos">
<short>Calculate cosine of angle</short>
<descr>
<var>Cos</var> returns the cosine of <var>X</var>, where X is an angle, in radians.
If the absolute value of the argument is larger than 2^63, then the
result is undefined.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Arctan"/>
<link id="Sin"/>
</seealso>
<example file="refex/ex12"/>
</element>
<element name="CSeg">
<short>Return code segment</short>
<descr>
<var>CSeg</var> returns the Code segment register. In Free Pascal, it returns always a
zero, since Free Pascal is a 32 bit compiler.
</descr>
<errors>None.
</errors>
<seealso>
<link id="DSeg"/>
<link id="Seg"/>
<link id="Ofs"/>
<link id="Ptr"/>
</seealso>
<example file="refex/ex13"/>
</element>
<element name="Dec">
<short>Decrease value of variable</short>
<descr>
<var>Dec</var> decreases the value of <var>X</var> with <var>Decrement</var>.
If <var>Decrement</var> isn't specified, then 1 is taken as a default.
</descr>
<errors>A range check can occur, or an underflow error, if an attempt it made
to decrease <var>X</var> below its minimum value.
</errors>
<seealso>
<link id="Inc"/>
</seealso>
<example file="refex/ex14"/>
</element>
<element name="Delete">
<short>Delete part of a string.</short>
<descr>
<var>Delete</var> removes <var>Count</var> characters from string <var>S</var>, starting
at position <var>Index</var>. All characters after the delected characters are
shifted <var>Count</var> positions to the left, and the length of the string is adjusted.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Copy"/>
<link id="Pos"/>
<link id="Insert"/>
</seealso>
<example file="refex/ex15"/>
</element>
<element name="Dispose">
<short>Free dynamically allocated memory</short>
<descr>
<p>The first form <var>Dispose</var> releases the memory allocated with a call to
<link id="New"/>. The pointer <var>P</var> must be typed. The released memory is
returned to the heap.
</p>
<p>The second form of <var>Dispose</var> accepts as a first parameter a pointer
to an object type, and as a second parameter the name of a destructor
of this object. The destructor will be called, and the memory allocated
for the object will be freed.
</p>
</descr>
<errors>An runtime error will occur if the pointer doesn't point to a location in the
heap.
</errors>
<seealso>
<link id="New"/>
<link id="Getmem"/>
<link id="Freemem"/>
</seealso>
<example file="refex/ex16"/>
</element>
<element name="DSeg">
<short>Return data segment</short>
<descr>
<var>DSeg</var> returns the data segment register. In Free Pascal, it returns always a
zero, since Free Pascal is a 32 bit compiler.
</descr>
<errors>None.
</errors>
<seealso>
<link id="CSeg"/>
<link id="Seg"/>
<link id="Ofs"/>
<link id="Ptr"/>
</seealso>
<example file="refex/ex17"/>
</element>
<element name="Eof">
<short>Check for end of file</short>
<descr>
<p>
<var>Eof</var> returns <var>True</var> if the file-pointer has reached the end of the
file, or if the file is empty. In all other cases <var>Eof</var> returns
<var>False</var>.
If no file <var>F</var> is specified, standard input is assumed.
</p>
<p>Note that calling this function may cause your program to wait: to determine
whether you are at EOF, it is necessary to read data. If the file descriptor
is not a real file (for instance for standard input or sockets) , then this
call may seem to hang the program while it is waiting for data to appear or
for the file descriptor to be closed.
</p>
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Eoln"/>
<link id="Assign"/>
<link id="Reset"/>
<link id="Rewrite"/>
</seealso>
<example file="refex/ex18"/>
</element>
<element name="Eoln">
<short>Check for end of line</short>
<descr>
<var>Eof</var> returns <var>True</var> if the file pointer has reached the end of a
line, which is demarcated by a line-feed character (ASCII value 10), or if
the end of the file is reached.
In all other cases <var>Eof</var> returns <var>False</var>.
If no file <var>F</var> is specified, standard input is assumed.
It can only be used on files of type <var>Text</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Eof"/>
<link id="Assign"/>
<link id="Reset"/>
<link id="Rewrite"/>
</seealso>
<example file="refex/ex19"/>
</element>
<element name="Erase">
<short>Delete a file from disk</short>
<descr>
<var>Erase</var> removes an unopened file from disk. The file should be
assigned with <var>Assign</var>, but not opened with <var>Reset</var> or <var>Rewrite</var>
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Assign"/>
</seealso>
<example file="refex/ex20"/>
</element>
<element name="Exclude">
<short>Exlude element from a set if it is present.</short>
<descr>
<p>
<var>Exclude</var> removes <var>E</var> from the set <var>S</var> if it is
included inthe set. E should be of the same type as the base type
of the set <var>S</var>.
</p>
<p>Thus, the two following statements do the same thing:
</p>
<code>S:=S-[E];
Exclude(S,E);
</code>
</descr>
<errors>If the type of the element <var>E</var> is not equal to the base type of the
set <var>S</var>, the compiler will generate an error.
</errors>
<seealso>
<link id="Include"/>
</seealso>
<example file="refex/ex111"/>
</element>
<element name="Exit">
<short>Exit current subroutine.</short>
<descr>
<var>Exit</var> exits the current subroutine, and returns control to the calling
routine. If invoked in the main program routine, exit stops the program.
The optional argument <var>X</var> allows to specify a return value, in the case
<var>Exit</var> is invoked in a function. The function result will then be
equal to <var>X</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Halt"/>
</seealso>
<example file="refex/ex21"/>
</element>
<element name="Exp">
<short>Exponentiate</short>
<descr>
<var>Exp</var> returns the exponent of <var>X</var>, i.e. the number <var>e</var> to the
power <var>X</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Ln"/>
<link id="Power"/>
</seealso>
<example file="refex/ex22"/>
</element>
<element name="Filepos">
<short>Get position in file</short>
<descr>
<var>Filepos</var> returns the current record position of the file-pointer in file
<var>F</var>. It cannot be invoked with a file of type <var>Text</var>. A compiler error
will be generated if this is attempted.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Filesize"/>
</seealso>
<example file="refex/ex23"/>
</element>
<element name="Filesize">
<short>Size of file</short>
<descr>
<var>Filesize</var> returns the total number of records in file <var>F</var>.
It cannot be invoked with a file of type <var>Text</var>. (under linux and unix, this
also means that it cannot be invoked on pipes).
If <var>F</var> is empty, 0 is returned.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Filepos"/>
</seealso>
<example file="refex/ex24"/>
</element>
<element name="FillByte">
<short>Fill memory region with 8-bit pattern</short>
<descr>
<var>FillByte</var> fills the memory starting at <var>X</var> with <var>Count</var> bytes
with value equal to <var>Value</var>.
This is useful for quickly zeroing out a memory location. When the size of
the memory location to be filled out is a multiple of 2 bytes, it is better
to use <link id="Fillword"/>, and if it is a multiple of 4 bytes it is better
to use <link id="FillDWord"/>, these routines are optimized for their respective sizes.
</descr>
<errors>No checking on the size of <var>X</var> is done.
</errors>
<seealso>
<link id="Fillchar"/>
<link id="FillDWord"/>
<link id="Fillword"/>
<link id="Move"/>
</seealso>
<example file="refex/ex103"/>
</element>
<element name="Fillchar">
<short>Fill memory region with certain character</short>
<descr>
<var>Fillchar</var> fills the memory starting at <var>X</var> with <var>Count</var> bytes
or characters with value equal to <var>Value</var>.
</descr>
<errors>No checking on the size of <var>X</var> is done.
</errors>
<seealso>
<link id="Fillword"/>
<link id="Move"/>
<link id="FillByte"/>
<link id="FillDWord"/>
</seealso>
<example file="refex/ex25"/>
</element>
<element name="FillDWord">
<short>Fill memory region with 32-bit pattern</short>
<descr>
<var>Fillword</var> fills the memory starting at <var>X</var> with <var>Count</var> DWords
with value equal to <var>Value</var>. A DWord is 4 bytes in size.
</descr>
<errors>No checking on the size of <var>X</var> is done.
</errors>
<seealso>
<link id="FillByte"/>
<link id="Fillchar"/>
<link id="Fillword"/>
<link id="Move"/>
</seealso>
<example file="refex/ex104"/>
</element>
<element name="Fillword">
<short>Fill memory region with 16-bit pattern</short>
<descr>
<var>Fillword</var> fills the memory starting at <var>X</var> with <var>Count</var> words
with value equal to <var>Value</var>. A word is 2 bytes in size.
</descr>
<errors>No checking on the size of <var>X</var> is done.
</errors>
<seealso>
<link id="Fillchar"/>
<link id="Move"/>
</seealso>
<example file="refex/ex76"/>
</element>
<element name="Flush">
<short>Write file buffers to disk</short>
<descr>
<var>Flush</var> empties the internal buffer of an opened file <var>F</var> and writes the
contents to disk. The file is \textit{not} closed as a result of this call.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Close"/>
</seealso>
<example file="refex/ex26"/>
</element>
<element name="Frac">
<short>Return fractional part of floating point value.</short>
<descr>
<var>Frac</var> returns the non-integer part of <var>X</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Round"/>
<link id="Int"/>
</seealso>
<example file="refex/ex27"/>
</element>
<element name="Freemem">
<short>Release allocated memory</short>
<descr>
<var>Freemem</var> releases the memory occupied by the pointer <var>P</var>, of size
<var>Count</var> (in bytes), and returns it to the heap. <var>P</var> should point to the memory
allocated to a dynamic variable.
</descr>
<errors>An error will occur when <var>P</var> doesn't point to the heap.
</errors>
<seealso>
<link id="Getmem"/>
<link id="New"/>
<link id="Dispose"/>
</seealso>
<example file="refex/ex28"/>
</element>
<element name="Getdir">
<short>Return the current directory</short>
<descr>
<var>Getdir</var> returns in <var>dir</var> the current directory on the drive
<var>drivenr</var>, where {drivenr} is 1 for the first floppy drive, 3 for the
first hard disk etc. A value of 0 returns the directory on the current disk.
On linux and unix systems, <var>drivenr</var> is ignored, as there is only one
directory tree.
</descr>
<errors>An error is returned under dos, if the drive requested isn't ready.
</errors>
<seealso>
<link id="Chdir"/>
</seealso>
<example file="refex/ex29"/>
</element>
<element name="Getmem">
<short>Allocate new memory on the heap</short>
<descr>
<p>
<var>Getmem</var> reserves <var>Size</var> bytes memory on the heap, and returns a
pointer to this memory in <var>p</var>. If no more memory is available, nil is
returned.
</p>
<p>For an example, see <link id="Freemem"/>.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Freemem"/>
<link id="Dispose"/>
<link id="New"/>
</seealso>
</element>
<element name="GetMemoryManager">
<short>Return current memory manager</short>
<descr>
<p>
<var>GetMemoryManager</var> stores the current Memory Manager record in
<var>MemMgr</var>.
</p>
<p>For an example, see the programmer's guide.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="SetMemoryManager"/>
<link id="IsMemoryManagerSet"/>.
</seealso>
</element>
<element name="Halt">
<short>Stop program execution.</short>
<descr>
<var>Halt</var> stops program execution and returns control to the calling
program. The optional argument <var>Errnum</var> specifies an exit value. If
omitted, zero is returned.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Exit"/>
</seealso>
<example file="refex/ex30"/>
</element>
<element name="HexStr">
<short>Convert integer value to string with hexadecimal representation.</short>
<descr>
<var>HexStr</var> returns a string with the hexadecimal representation
of <var>Value</var>. The string has exactly <var>cnt</var> charaters.
(i.e. only the <var>cnt</var> rightmost nibbles are taken into account)
To have a complete representation of a Longint-type value, 8
nibbles are needed, i.e. <var>cnt=8</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Str"/>
<link id="Val"/>
<link id="BinStr"/>
</seealso>
<example file="refex/ex81"/>
</element>
<element name="Hi">
<short>Return high byte/word of value.</short>
<descr>
<var>Hi</var> returns the high byte or word from <var>X</var>, depending on the size
of X. If the size of X is 4, then the high word is returned. If the size is
2 then the high byte is returned.
<var>Hi</var> cannot be invoked on types of size 1, such as byte or char.
</descr>
<errors>None
</errors>
<seealso>
<link id="Lo"/>
</seealso>
<example file="refex/ex31"/>
</element>
<element name="High">
<short>Return highest index of open array or enumerated</short>
<descr>
<p>The return value of <var>High</var> depends on it's argument:
</p>
<ol>
<li>If the argument is an ordinal type, <var>High</var> returns the highest
value in the range of the given ordinal type.
</li>
<li>If the argument is an array type or an array type variable then
<var>High</var> returns the highest possible value of it's index.
</li>
<li>If the argument is an open array identifier in a function or
procedure, then <var>High</var> returns the highest index of the array, as if the
array has a zero-based index.
</li>
<li>If the argument is a set type then it returns the highest value of
the underlying ordinal type.
</li>
</ol>
<p>The return type is always the same type as the type of the argument
(This can lead to some nasty surprises !).
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Low"/>
<link id="Ord"/>
<link id="Pred"/>
<link id="Succ"/>
</seealso>
<example file="refex/ex80"/>
</element>
<element name="Inc">
<short>Increase value of integer variable</short>
<descr>
<var>Inc</var> increases the value of <var>X</var> with <var>Increment</var>.
If <var>Increment</var> isn't specified, then 1 is taken as a default.
</descr>
<errors>If range checking is on, then A range check can occur, or an overflow
error, when an attempt is made to increase <var>X</var> over its maximum value.
</errors>
<seealso>
<link id="Dec"/>
</seealso>
<example file="refex/ex32"/>
</element>
<element name="Include">
<short>Include element in set if it was not yet present.</short>
<descr>
<p>
<var>Include</var> includes <var>E</var> in the set <var>S</var> if it is
not yet part of the set. E should be of the same type as the base type
of the set <var>S</var>.
</p>
<p>Thus, the two following statements do the same thing:
</p>
<code>S:=S+[E];
Include(S,E);
</code>
<p>For an example, see <link id="Exclude"/>
</p>
</descr>
<errors>If the type of the element <var>E</var> is not equal to the base type of the
set <var>S</var>, the compiler will generate an error.
</errors>
<seealso>
<link id="Exclude"/>
</seealso>
</element>
<element name="IndexByte">
<short>Search for a byte in a memory range.</short>
<descr>
<var>IndexByte</var> searches the memory at <var>buf</var> for maximally <var>len</var>
positions for the byte <var>b</var> and returns it's position if it found one.
If <var>b</var> is not found then -1 is returned.
The position is zero-based.
</descr>
<errors>
<var>Buf</var> and <var>Len</var> are not checked to see if they are valid values.
</errors>
<seealso>
<link id="IndexChar"/>
<link id="IndexDWord"/>
<link id="IndexWord"/>
<link id="CompareByte"/>
</seealso>
<example file="refex/ex105"/>
</element>
<element name="IndexChar">
<short>Search for a character in a memory range.</short>
<descr>
<var>IndexChar</var> searches the memory at <var>buf</var> for maximally <var>len</var>
positions for the character <var>b</var> and returns it's position if it found one.
If <var>b</var> is not found then -1 is returned.
The position is zero-based. The <var>IndexChar0</var> variant stops looking if
a null character is found, and returns -1 in that case.
</descr>
<errors>
<var>Buf</var> and <var>Len</var> are not checked to see if they are valid values.
</errors>
<seealso>
<link id="IndexByte"/>
<link id="IndexDWord"/>
<link id="IndexWord"/>
<link id="CompareChar"/>
</seealso>
<example file="refex/ex108"/>
</element>
<element name="IndexDWord">
<short>Search for a DWord value in a memory range.</short>
<descr>
<var>IndexChar</var> searches the memory at <var>buf</var> for maximally <var>len</var>
positions for the DWord <var>DW</var> and returns it's position if it found one.
If <var>DW</var> is not found then -1 is returned.
The position is zero-based.
</descr>
<errors>
<var>Buf</var> and <var>Len</var> are not checked to see if they are valid values.
</errors>
<seealso>
<link id="IndexByte"/>
<link id="IndexChar"/>
<link id="IndexWord"/>
<link id="CompareDWord"/>
</seealso>
<example file="refex/ex106"/>
</element>
<element name="IndexWord">
<short>Search for a WORD value in a memory range.</short>
<descr>
<var>IndexChar</var> searches the memory at <var>buf</var> for maximally <var>len</var>
positions for the Word <var>W</var> and returns it's position if it found one.
If <var>W</var> is not found then -1 is returned.
</descr>
<errors>
<var>Buf</var> and <var>Len</var> are not checked to see if they are valid values.
</errors>
<seealso>
<link id="IndexByte"/>
<link id="IndexDWord"/>
<link id="IndexChar"/>
<link id="CompareWord"/>
</seealso>
<example file="refex/ex107"/>
</element>
<element name="Insert">
<short>Insert one string in another.</short>
<descr>
<var>Insert</var> inserts string <var>Source</var> in string <var>S</var>, at position
<var>Index</var>, shifting all characters after <var>Index</var> to the right. The
resulting string is truncated at 255 characters, if needed. (i.e. for
shortstrings)
</descr>
<errors>None.
</errors>
<seealso>
<link id="Delete"/>
<link id="Copy"/>
<link id="Pos"/>
</seealso>
<example file="refex/ex33"/>
</element>
<element name="IsMemoryManagerSet">
<short>Is the memory manager set</short>
<descr>
<var>IsMemoryManagerSet</var> will return <var>True</var> if the memory manager has
been set to another value than the system heap manager, it will return
<var>False</var> otherwise.
</descr>
<errors>None.
</errors>
<seealso>
<link id="SetMemoryManager"/>
<link id="GetMemoryManager"/>
</seealso>
</element>
<element name="Int">
<short>Calculate integer part of floating point value.</short>
<descr>
<var>Int</var> returns the integer part of any Real <var>X</var>, as a Real.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Frac"/>
<link id="Round"/>
</seealso>
<example file="refex/ex34"/>
</element>
<element name="IOresult">
<short>Return result of last file IO operation</short>
<descr>
<p>IOresult contains the result of any input/output call, when the
<var>{\$i-}</var> compiler directive is active, disabling IO checking.
When the flag is read, it is reset to zero.
If <var>IOresult</var> is zero, the operation completed successfully. If
non-zero, an error occurred. The following errors can occur:
</p>
<p>dos errors :
</p>
<dl>
<dt>2</dt>
<dd>File not found.</dd>
<dt>3</dt>
<dd>Path not found.</dd>
<dt>4</dt>
<dd>Too many open files.</dd>
<dt>5</dt>
<dd>Access denied.</dd>
<dt>6</dt>
<dd>Invalid file handle.</dd>
<dt>12</dt>
<dd>Invalid file-access mode.</dd>
<dt>15</dt>
<dd>Invalid disk number.</dd>
<dt>16</dt>
<dd>Cannot remove current directory.</dd>
<dt>17</dt>
<dd>Cannot rename across volumes.</dd>
</dl>
<p>I/O errors :
</p>
<dl>
<dt>100</dt>
<dd>Error when reading from disk.</dd>
<dt>101</dt>
<dd>Error when writing to disk.</dd>
<dt>102</dt>
<dd>File not assigned.</dd>
<dt>103</dt>
<dd>File not open.</dd>
<dt>104</dt>
<dd>File not opened for input.</dd>
<dt>105</dt>
<dd>File not opened for output.</dd>
<dt>106</dt>
<dd>Invalid number.</dd>
</dl>
<p>Fatal errors :
</p>
<dl>
<dt>150</dt>
<dd>Disk is write protected.</dd>
<dt>151</dt>
<dd>Unknown device.</dd>
<dt>152</dt>
<dd>Drive not ready.</dd>
<dt>153</dt>
<dd>Unknown command.</dd>
<dt>154</dt>
<dd>CRC check failed.</dd>
<dt>155</dt>
<dd>Invalid drive specified..</dd>
<dt>156</dt>
<dd>Seek error on disk.</dd>
<dt>157</dt>
<dd>Invalid media type.</dd>
<dt>158</dt>
<dd>Sector not found.</dd>
<dt>159</dt>
<dd>Printer out of paper.</dd>
<dt>160</dt>
<dd>Error when writing to device.</dd>
<dt>161</dt>
<dd>Error when reading from device.</dd>
<dt>162</dt>
<dd>Hardware failure.</dd>
</dl>
</descr>
<errors>None.
</errors>
<seealso>All I/O functions.
</seealso>
<example file="refex/ex35"/>
</element>
<element name="Length">
<short>Calculate length of a string.</short>
<descr>
<p>
<var>Length</var> returns the length of the string <var>S</var>, which is limited
to 255 for shortstrings. If the strings <var>S</var> is empty, 0 is returned.
</p>
<p>
<em>Note:</em> The length of the string <var>S</var> is stored in <var>S[0]</var> for
shortstrings only. The <var>Length</var> fuction should always be used on
ansistrings and widestrings.
</p>
<p>For dynamical arrays, the function returns the number of elements in the
array.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Pos"/>
</seealso>
<example file="refex/ex36"/>
</element>
<element name="Ln">
<short>Calculate logarithm</short>
<descr>
<var>Ln</var> returns the natural logarithm of the Real parameter <var>X</var>.
<var>X</var> must be positive.
</descr>
<errors>An run-time error will occur when <var>X</var> is negative.
</errors>
<seealso>
<link id="Exp"/>
<link id="Power"/>
</seealso>
<example file="refex/ex37"/>
</element>
<element name="Lo">
<short>Return low byte/word of value.</short>
<descr>
<var>Lo</var> returns the low byte of its argument if this is of type
<var>Integer</var> or
<var>Word</var>. It returns the low word of its argument if this is of type
<var>Longint</var> or <var>Cardinal</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Ord"/>
<link id="Chr"/>
<link id="Hi"/>
</seealso>
<example file="refex/ex38"/>
</element>
<element name="LongJmp">
<short>Jump to address.</short>
<descr>
<p>
<var>LongJmp</var> jumps to the adress in the <var>env</var>
<var>jmp_buf</var>,
and restores the registers that were stored in it at the corresponding
<link id="SetJmp"/> call.
In effect, program flow will continue at the <var>SetJmp</var> call, which will
return <var>value</var> instead of 0. If a <var>value</var> equal to zero is passed,
it will be converted to 1 before passing it on. The call will not return, so it must be
used with extreme care.
This can be used for error recovery, for instance when a segmentation fault
occurred.
</p>
<p>For an example, see <link id="SetJmp"/>
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="SetJmp"/>
</seealso>
</element>
<element name="Low">
<short>Return lowest index of open array or enumerated</short>
<descr>
<p>The return value of <var>Low</var> depends on it's argument:
</p>
<ol>
<li>If the argument is an ordinal type, <var>Low</var> returns the lowest
value in the range of the given ordinal type.
</li>
<li>If the argument is an array type or an array type variable then
<var>Low</var> returns the lowest possible value of it's index.
</li>
<li>If the argument is an open array identifier in a function or
procedure, then <var>Low</var> returns the lowest element of the array,
which is always zero.
</li>
<li>If the argument is a set type then it returns the lowest value of
the underlying ordinal type.
</li>
</ol>
<p>The return type is always the same type as the type of the argument.
</p>
<p>for an example, see <link id="High"/>.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="High"/>
<link id="Ord"/>
<link id="Pred"/>
<link id="Succ"/>
</seealso>
</element>
<element name="Lowercase">
<short>Return lowercase version of a string.</short>
<descr>
<var>Lowercase</var> returns the lowercase version of its argument <var>C</var>.
If its argument is a string, then the complete string is converted to
lowercase. The type of the returned value is the same as the type of the
argument.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Upcase"/>
</seealso>
<example file="refex/ex73"/>
</element>
<element name="Mkdir">
<short>Create a new directory.</short>
<descr>
<p>
<var>Mkdir</var> creates a new directory <var>S</var>.
</p>
<p>For an example, see <link id="Rmdir"/>.
</p>
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Chdir"/>
<link id="Rmdir"/>
</seealso>
</element>
<element name="Move">
<short>Move data from one location in memory to another</short>
<descr>
<var>Move</var> moves <var>Count</var> bytes from <var>Source</var> to <var>Dest</var>.
</descr>
<errors>If either <var>Dest</var> or <var>Source</var> is outside the accessible memory for
the process, then a run-time error will be generated.
</errors>
<seealso>
<link id="Fillword"/>
<link id="Fillchar"/>
</seealso>
<example file="refex/ex42"/>
</element>
<element name="MoveChar0">
<short>Move data till first zero character</short>
<descr>
<var>MoveChar0</var> moves <var>Count</var> bytes from <var>buf1</var> to <var>buf2</var>, and
stops moving if a zero character is found.
</descr>
<errors>No checking is done to see if <var>Count</var> stays within the memory allocated
to the process.
</errors>
<seealso>
<link id="Move"/>
</seealso>
<example file="refex/ex109"/>
</element>
<element name="New">
<short>Dynamically allocate memory for variable</short>
<descr>
<p>
<var>New</var> allocates a new instance of the type pointed to by <var>P</var>, and
puts the address in <var>P</var>.
If P is an object, then it is possible to
specify the name of the constructor with which the instance will be created.
</p>
<p>For an example, see <link id="Dispose"/>.
</p>
</descr>
<errors>If not enough memory is available, <var>Nil</var> will be returned.
</errors>
<seealso>
<link id="Dispose"/>
<link id="Freemem"/>
<link id="Getmem"/>
</seealso>
</element>
<element name="Odd">
<short>Is a value odd or even ?</short>
<descr>
<var>Odd</var> returns <var>True</var> if <var>X</var> is odd, or <var>False</var> otherwise.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Abs"/>
<link id="Ord"/>
</seealso>
<example file="refex/ex43"/>
</element>
<element name="OctStr">
<short>Convert integer to a string with octal representation.</short>
<descr>
<var>OctStr</var> returns a string with the octal representation
of <var>Value</var>. The string has exactly <var>cnt</var> charaters.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Str"/>
<link id="Val"/>
<link id="BinStr"/>
<link id="HexStr"/>
</seealso>
<example file="refex/ex112"/>
</element>
<element name="Ofs">
<short>Return offset of a variable.</short>
<descr>
<var>Ofs</var> returns the offset of the address of a variable.
This function is only supported for compatibility. In Free Pascal, it
returns always the complete address of the variable, since Free Pascal is a 32 bit
compiler.
</descr>
<errors>None.
</errors>
<seealso>
<link id="DSeg"/>
<link id="CSeg"/>
<link id="Seg"/>
<link id="Ptr"/>
</seealso>
<example file="refex/ex44"/>
</element>
<element name="Ord">
<short>Return ordinal value of an ordinal type.</short>
<descr>
<p>
<var>Ord</var> returns the Ordinal value of a ordinal-type variable <var>X</var>.
</p>
<p>Historical note:
</p>
<p>Originally, Pascal did not have typecasts and ord was a necessary function in
order to do certain operations on non-integer ordinal types. With the arrival of
typecasting a generic approach became possible, making ord mostly obselete.
However ord is not considered deprecated and remains in wide use today.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Chr"/>
<link id="Succ"/>
<link id="Pred"/>
<link id="High"/>
<link id="Low"/>
</seealso>
<example file="refex/ex45"/>
</element>
<element name="Paramcount">
<short>Return number of command-line parameters passed to the program.</short>
<descr>
<var>Paramcount</var> returns the number of command-line arguments. If no
arguments were given to the running program, <var>0</var> is returned.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Paramstr"/>
</seealso>
<example file="refex/ex46"/>
</element>
<element name="Paramstr">
<short>Return value of a command-line argument.</short>
<descr>
<p>
<var>Paramstr</var> returns the <var>L</var>-th command-line argument.
<var>L</var> must be between <var>0</var> and <var>Paramcount</var>,
these values included. The zeroth argument is the path and file name
with which the program was started.
</p>
<p>The command-line parameters will be truncated to a length of 255,
even though the operating system may support bigger command-lines.
The <var>Objpas</var> unit (used in <var>objfpc</var> or <var>delphi</var> mode)
defines versions of <var>Paramstr</var> which return the full-length command-line
arguments, using ansistrings.
</p>
<p>In the interest of portability, the <var>ParamStr</var> function tries to behave
the same on all operating systems: like the original <var>ParamStr</var> function
in Turbo Pascal. This means even on Unix, paramstr(0) returns the full
path to the program executable. A notable exception is Mac OS X, where
the return value depends on how the application was started. It may be that
just the name of the application is returned (in case of a command-line
launch)
</p>
<p>In general, it's a bad idea to rely on the location of the binary. Often,
this goes against best OS practices. Configuration data should (or can) not
be stored next to the binary, but on designated locations. What locations
these are, is very much operating system dependent. Therefore,
<var>ParamStr(0)</var> should be used with care.
</p>
<p>For an example, see <link id="Paramcount"/>.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Paramcount"/>
</seealso>
</element>
<element name="Pi">
<short>Return the value of PI.</short>
<descr>
<var>Pi</var> returns the value of Pi (3.1415926535897932385).
</descr>
<errors>None.
</errors>
<seealso>
<link id="Cos"/>
<link id="Sin"/>
</seealso>
<example file="refex/ex47"/>
</element>
<element name="Pos">
<short>Search for substring in a string.</short>
<descr>
<var>Pos</var> returns the index of <var>Substr</var> in <var>S</var>, if <var>S</var> contains
<var>Substr</var>. In case <var>Substr</var> isn't found, <var>0</var> is returned.
The search is case-sensitive.
</descr>
<errors>None
</errors>
<seealso>
<link id="Length"/>
<link id="Copy"/>
<link id="Delete"/>
<link id="Insert"/>
</seealso>
<example file="refex/ex48"/>
</element>
<element name="Power">
<short>Raise float to integer power</short>
<descr>
<p>
<var>Power</var> returns the value of <var>base</var> to the power <var>expon</var>.
<var>Base</var> and <var>expon</var> can be of type Longint, in which case the
result will also be a Longint.
</p>
<p>The function actually returns <var>Exp(expon*Ln(base))</var>
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Exp"/>
<link id="Ln"/>
</seealso>
<example file="refex/ex78"/>
</element>
<element name="Pred">
<short>Return previous element for an ordinal type.</short>
<descr>
<p>
<var>Pred</var> returns the element that precedes the element that was passed
to it. If it is applied to the first value of the ordinal type, and the
program was compiled with range checking on (<var>{$R+}</var>), then a run-time
error will be generated.
</p>
<p>for an example, see <link id="Ord"/>
</p>
</descr>
<errors>Run-time error 201 is generated when the result is out of
range.
</errors>
<seealso>
<link id="Ord"/>
<link id="Pred"/>
<link id="High"/>
<link id="Low"/>
</seealso>
</element>
<element name="Ptr">
<short>Combine segment and offset to pointer</short>
<descr>
<p>
<var>Ptr</var> returns a pointer, pointing to the address specified by
segment <var>Sel</var> and offset <var>Off</var>.
</p>
<remark>
<ol>
<li>In the 32-bit flat-memory model supported by Free Pascal, this
function is obsolete.
</li>
<li>The returned address is simply the offset.
</li>
</ol>
</remark>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Addr"/>
</seealso>
<example file="refex/ex59"/>
</element>
<element name="Random">
<short>Generate random number</short>
<descr>
<var>Random</var> returns a random number larger or equal to <var>0</var> and
strictly less than <var>L</var>.
If the argument <var>L</var> is omitted, a Real number between 0 and 1 is returned.
(0 included, 1 excluded)
</descr>
<errors>None.
</errors>
<seealso>
<link id="Randomize"/>
</seealso>
<example file="refex/ex49"/>
</element>
<element name="Randomize">
<short>Initialize random number generator</short>
<descr>
<p>
<var>Randomize</var> initializes the random number generator of Free Pascal, by giving
a value to <var>Randseed</var>, calculated with the system clock.
</p>
<p>For an example, see <link id="Random"/>.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Random"/>
</seealso>
</element>
<element name="Read">
<short>Read from a text file into variable</short>
<descr>
<p>
<var>Read</var> reads one or more values from a file <var>F</var>, and stores the
result in <var>V1</var>, <var>V2</var>, etc.; If no file <var>F</var> is specified, then
standard input is read.
If <var>F</var> is of type <var>Text</var>, then the variables <var>V1, V2</var> etc. must be
of type <var>Char</var>, <var>Integer</var>, <var>Real</var>, <var>String</var>.
If <var>F</var> is a typed file, then each of the variables must be of the type
specified in the declaration of <var>F</var>. Untyped files are not allowed as an
argument.
</p>
<p>In earlier versions of FPC, it was also allowed to read <var>Pchar</var>
null-terminated strings, but this has been removed, since there is no buffer
checking possible.
</p>
</descr>
<errors>If no data is available, a run-time error is generated. This behavior can
be controlled with the <var>{$I}</var> compiler switch.
</errors>
<seealso>
<link id="Readln"/>
<link id="Blockread"/>
<link id="Write"/>
<link id="Blockwrite"/>
</seealso>
<example file="refex/ex50"/>
</element>
<element name="Readln">
<short>Read from a text file into variable and goto next line</short>
<descr>
<p>
<var>Read</var> reads one or more values from a file <var>F</var>, and stores the
result in <var>V1</var>, <var>V2</var>, etc. After that it goes to the next line in
the file. The end of the line is marked by the <var>LineEnding</var>
character sequence (which is platform dependent). The end-of-line marker is
not considered part of the line and is ignored.
</p>
<p>If no file <var>F</var> is specified, then standard input is read.
The variables <var>V1, V2</var> etc. must be of type <var>Char</var>, <var>Integer</var>,
<var>Real</var>, <var>String</var> or <var>PChar</var>.
</p>
<p>For an example, see <link id="Read"/>.
</p>
</descr>
<errors>If no data is available, a run-time error is generated. This behavior can
be controlled with the <var>{$I}</var> compiler switch.
</errors>
<seealso>
<link id="Read"/>
<link id="Blockread"/>
<link id="Write"/>
<link id="Blockwrite"/>
</seealso>
</element>
<element name="Real2Double">
<short>Convert Turbo Pascal style real to double.</short>
<descr>
<p>The <var>Real2Double</var> function converts a Turbo Pascal style real (6 bytes long) to
a native Free Pascal double type. It can be used e.g. to read old binary TP files with
FPC and convert them to Free Pacal binary files.
</p>
<p>Note that the assignment operator has been overloaded so a <var>Real48</var> type
can be assigned directly to a double or extended.
</p>
</descr>
<errors>None.
</errors>
<seealso/>
<example file="refex/ex110"/>
</element>
<element name="Rename">
<short>Rename file on disk</short>
<descr>
<var>Rename</var> changes the name of the assigned file <var>F</var> to <var>S</var>.
<var>F</var>
must be assigned, but not opened.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Erase"/>
</seealso>
<example file="refex/ex77"/>
</element>
<element name="Reset">
<short>Open file for reading</short>
<descr>
<var>Reset</var> opens a file <var>F</var> for reading. <var>F</var> can be any file type.
If <var>F</var> is a text file, or refers to standard I/O (e.g : '') then it is
opened read-only, otherwise it is opened using the mode specified in
<var>filemode</var>.
If <var>F</var> is an untyped file, the record size can be specified in
the optional parameter <var>L</var>. A default value of 128 is used.
File sharing is not taken into account when calling <var>Reset</var>.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Rewrite"/>
<link id="Assign"/>
<link id="Close"/>
<link id="Append"/>
</seealso>
<example file="refex/ex51"/>
</element>
<element name="Rewrite">
<short>Open file for writing</short>
<descr>
<var>Rewrite</var> opens a file <var>F</var> for writing. <var>F</var> can be any file type.
If <var>F</var> is an untyped or typed file, then it is opened for reading and
writing. If <var>F</var> is an untyped file, the record size can be specified in
the optional parameter <var>L</var>. Default a value of 128 is used.
if <var>Rewrite</var> finds a file with the same name as <var>F</var>, this file is
truncated to length <var>0</var>. If it doesn't find such a file, a new file is
created.
Contrary to Turbo Pascal, Free Pascal opens the file with mode <var>fmoutput</var>. If it should
be opened in <var>fminout</var> mode, an extra call to <link id="Reset"/> is needed.
File sharing is not taken into account when calling <var>Rewrite</var>.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Reset"/>
<link id="Assign"/>
<link id="Close"/>
<link id="Flush"/>
<link id="Append"/>
</seealso>
<example file="refex/ex52"/>
</element>
<element name="Rmdir">
<short>Remove directory when empty.</short>
<descr>
<var>Rmdir</var> removes the directory <var>S</var>.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Chdir"/>
<link id="Mkdir"/>
</seealso>
<example file="refex/ex53"/>
</element>
<element name="Round">
<short>Round floating point value to nearest integer number.</short>
<descr>
<p>
<var>Round</var> rounds <var>X</var> to the closest integer, which may be bigger or
smaller than <var>X</var>.
</p>
<p>In the case of <var>.5</var>, the algorithm uses "banker's rounding":
<var>.5</var> values are always rounded towards the even number.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Frac"/>
<link id="Int"/>
<link id="Trunc"/>
</seealso>
<example file="refex/ex54"/>
</element>
<element name="Runerror">
<short>Generate a run-time error.</short>
<descr>
<var>Runerror</var> stops the execution of the program, and generates a
run-time error <var>ErrorCode</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Exit"/>
<link id="Halt"/>
</seealso>
<example file="refex/ex55"/>
</element>
<element name="Seek">
<short>Set file position</short>
<descr>
<var>Seek</var> sets the file-pointer for file <var>F</var> to record Nr. <var>Count</var>.
The first record in a file has <var>Count=0</var>. F can be any file type, except
<var>Text</var>. If <var>F</var> is an untyped file, with no record size specified in
<link id="Reset"/> or <link id="Rewrite"/>, 128 is assumed.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Eof"/>
<link id="SeekEof"/>
<link id="SeekEoln"/>
</seealso>
<example file="refex/ex56"/>
</element>
<element name="SeekEof">
<short>Set file position to end of file</short>
<descr>
<p>
<var>SeekEof</var> returns <var>True</var> is the file-pointer is at the end of the
file. It ignores all whitespace.
Calling this function has the effect that the file-position is advanced
until the first non-whitespace character or the end-of-file marker is
reached.
</p>
<p>If the end-of-file marker is reached, <var>True</var> is returned. Otherwise,
False is returned.
</p>
<p>If the parameter <var>F</var> is omitted, standard <var>Input</var> is assumed.
</p>
<remark>The SeekEOF function can only be used on real textfiles: when assigning the
file to other kinds of (virtual) text files, the function may fail, although
it will perform a number of tests to guard against wrong usage.
</remark>
</descr>
<errors>A run-time error is generated if the file <var>F</var> isn't opened.
</errors>
<seealso>
<link id="Eof"/>
<link id="SeekEoln"/>
<link id="Seek"/>
</seealso>
<example file="refex/ex57"/>
</element>
<element name="SeekEoln">
<short>Set file position to end of line</short>
<descr>
<var>SeekEoln</var> returns <var>True</var> is the file-pointer is at the end of the
current line. It ignores all whitespace.
Calling this function has the effect that the file-position is advanced
until the first non-whitespace character or the end-of-line marker is
reached.
If the end-of-line marker is reached, <var>True</var> is returned. Otherwise,
False is returned.
The end-of-line marker is defined as <var>#10</var>, the LineFeed character.
If the parameter <var>F</var> is omitted, standard <var>Input</var> is assumed.
</descr>
<errors>A run-time error is generated if the file <var>F</var> isn't opened.
</errors>
<seealso>
<link id="Eof"/>
<link id="SeekEof"/>
<link id="Seek"/>
</seealso>
<example file="refex/ex58"/>
</element>
<element name="Seg">
<short>Return segment</short>
<descr>
<var>Seg</var> returns the segment of the address of a variable.
This function is only supported for compatibility. In Free Pascal, it
returns always 0, since Free Pascal uses a flat 32/64 bit
memory model. In such a memory model segments have no meaning.
</descr>
<errors>None.
</errors>
<seealso>
<link id="DSeg"/>
<link id="CSeg"/>
<link id="Ofs"/>
<link id="Ptr"/>
</seealso>
<example file="refex/ex60"/>
</element>
<element name="SetMemoryManager">
<short>Set a memory manager</short>
<descr>
<p>
<var>SetMemoryManager</var> sets the current memory manager record to
<var>MemMgr</var>.
</p>
<p>For an example, see the programmer's guide.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="GetMemoryManager"/>
<link id="IsMemoryManagerSet"/>
</seealso>
</element>
<element name="SetJmp">
<short>Save current execution point.</short>
<descr>
<var>SetJmp</var> fills <var>env</var> with the necessary data for a jump back to the
point where it was called. It returns zero if called in this way.
If the function returns nonzero, then it means that a call to <link id="LongJmp"/>
with <var>env</var> as an argument was made somewhere in the program.
</descr>
<errors>None.
</errors>
<seealso>
<link id="LongJmp"/>
</seealso>
<example file="refex/ex79"/>
</element>
<element name="SetLength">
<short>Set length of a string.</short>
<descr>
<p>
<var>SetLength</var> sets the length of the string <var>S</var> to <var>Len</var>. <var>S</var>
can be an ansistring, a short string or a widestring.
For <var>ShortStrings</var>, <var>Len</var> can maximally be 255. For <var>AnsiStrings</var>
it can have any value. For <var>AnsiString</var> strings, <var>SetLength</var> {\em
must} be used to set the length of the string.
</p>
<p>In the case of a dynamical array <var>A</var>, setlength sets the number
of elements. The elements are numbered from index 0, so the count runs from
0 to <var>Len-1</var>. If Zero is specified, the array is cleared.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Length"/>
</seealso>
<example file="refex/ex85"/>
</element>
<element name="SetString">
<short>Set length of a string and copy buffer.</short>
<descr>
<var>SetString</var> sets the length of the string <var>S</var> to <var>Len</var> and
if <var>Buf</var> is non-nil, copies <var>Len</var> characters from <var>Buf</var>
into <var>S</var>. <var>S</var> can be an ansistring, a short string or a widestring.
For <var>ShortStrings</var>, <var>Len</var> can maximally be 255.
</descr>
<errors>None.
</errors>
<seealso>
<link id="SetLength"/>
</seealso>
</element>
<element name="SetTextBuf">
<short>Set size of text file internal buffer</short>
<descr>
<p>
<var>SetTextBuf</var> assigns an I/O buffer to a text file. The new buffer is
located at <var>Buf</var> and is <var>Size</var> bytes long. If <var>Size</var> is omitted,
then <var>SizeOf(Buf)</var> is assumed.
The standard buffer of any text file is 128 bytes long. For heavy I/O
operations this may prove too slow. The <var>SetTextBuf</var> procedure allows
to set a bigger buffer for the I/O of the application, thus reducing the number of
system calls, and thus reducing the load on the system resources.
The maximum size of the newly assigned buffer is 65355 bytes.
</p>
<remark>
<ul>
<li>Never assign a new buffer to an opened file. A
new buffer can be assigned immediately after a call
to <link id="Rewrite"/>, <link id="Reset"/> or
<var>Append</var>, but not after the file was read from/written to. This may cause
loss of data. If a new buffer must be assigned after read/write
operations have been performed, the file should be flushed first.
This will ensure that the current buffer is emptied.
</li>
<li>Take care that the assigned buffer is always valid. If a local variable is
assigned as a buffer, then after the program exits the local program block,
the buffer will no longer be valid, and stack problems may occur.
</li>
</ul>
</remark>
</descr>
<errors>No checking on <var>Size</var> is done.
</errors>
<seealso>
<link id="Assign"/>
<link id="Reset"/>
<link id="Rewrite"/>
<link id="Append"/>
</seealso>
<example file="refex/ex61"/>
</element>
<element name="Sin">
<short>Calculate sine of angle</short>
<descr>
<var>Sin</var> returns the sine of its argument <var>X</var>, where <var>X</var> is an
angle in radians.
If the absolute value of the argument is larger than 2^63, then the
result is undefined.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Cos"/>
<link id="Pi"/>
<link id="Exp"/>
<link id="Ln"/>
</seealso>
<example file="refex/ex62"/>
</element>
<element name="SizeOf">
<short>Return size of a variable or type.</short>
<descr>
<p>
<var>SizeOf</var> returns the size, in bytes, of any variable or type-identifier.
</p>
<remark>This isn't really a RTL function. Its result is calculated at
compile-time, and hard-coded in the executable.
</remark>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Addr"/>
</seealso>
<example file="refex/ex63"/>
</element>
<element name="Sptr">
<short>Return current stack pointer</short>
<descr>
<var>Sptr</var> returns the current stack pointer.
</descr>
<errors>None.
</errors>
<seealso>
<link id="SSeg"/>
</seealso>
<example file="refex/ex64"/>
</element>
<element name="Sqr">
<short>Calculate the square of a value.</short>
<descr>
<var>Sqr</var> returns the square of its argument <var>X</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Sqrt"/>
<link id="Ln"/>
<link id="Exp"/>
</seealso>
<example file="refex/ex65"/>
</element>
<element name="Sqrt">
<short>Calculate the square root of a value</short>
<descr>
<var>Sqrt</var> returns the square root of its argument <var>X</var>, which must be
positive.
</descr>
<errors>If <var>X</var> is negative, then a run-time error is generated.
</errors>
<seealso>
<link id="Sqr"/>
<link id="Ln"/>
<link id="Exp"/>
</seealso>
<example file="refex/ex66"/>
</element>
<element name="SSeg">
<short>Return stack segment register value.</short>
<descr>
<var>SSeg</var> returns the Stack Segment. This function is only
supported for compatibility reasons, as <var>Sptr</var> returns the
correct contents of the stackpointer.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Sptr"/>
</seealso>
<example file="refex/ex67"/>
</element>
<element name="Str">
<short>Convert a numerical value to a string.</short>
<descr>
<p>
<var>Str</var> returns a string which represents the value of X. X can be any
numerical type. The actual declaration of <var>Str</var> is not according
to pascal syntax, and should be
</p>
<code>procedure Str(var X: TNumericType[:NumPlaces[:Decimals]];var S: String)
</code>
<p>Where the optional <var>NumPlaces</var> and <var>Decimals</var> specifiers control the
formatting of the string: <var>NumPlaces</var> gives the total width of the
string, and <var>Decimals</var> the number of decimals after the decimal
separator char.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Val"/>
</seealso>
<example file="refex/ex68"/>
</element>
<element name="StringOfChar">
<short>Return a string consisting of 1 character repeated N times.</short>
<descr>
<p>
<var>StringOfChar</var> creates a new String of length <var>l</var> and fills
it with the character <var>c</var>.
</p>
<p>It is equivalent to the following calls:
</p>
<code>SetLength(StringOfChar,l);
FillChar(Pointer(StringOfChar)^,Length(StringOfChar),c);
</code>
</descr>
<errors>None.
</errors>
<seealso>
<link id="SetLength"/>
</seealso>
<example file="refex/ex97"/>
</element>
<element name="Succ">
<short>Return next element of ordinal type.</short>
<descr>
<p>
<var>Succ</var> returns the element that succeeds the element that was passed
to it. If it is applied to the last value of the ordinal type, and the
program was compiled with range checking on (<var>{$R+}</var>), then a run-time
error will be generated.
</p>
<p>for an example, see <link id="Ord"/>.
</p>
</descr>
<errors>Run-time error 201 is generated when the result is out of
range.
</errors>
<seealso>
<link id="Ord"/>
<link id="Pred"/>
<link id="High"/>
<link id="Low"/>
</seealso>
</element>
<element name="Swap">
<short>Swap high and low bytes/words of a variable</short>
<descr>
<var>Swap</var> swaps the high and low order bytes of <var>X</var> if <var>X</var> is of
type <var>Word</var> or <var>Integer</var>, or swaps the high and low order words of
<var>X</var> if <var>X</var> is of type <var>Longint</var> or <var>Cardinal</var>.
The return type is the type of <var>X</var>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Lo"/>
<link id="Hi"/>
</seealso>
<example file="refex/ex69"/>
</element>
<element name="Trunc">
<short>Truncate a floating point value.</short>
<descr>
<var>Trunc</var> returns the integer part of <var>X</var>,
which is always smaller than (or equal to) <var>X</var> in absolute value.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Frac"/>
<link id="Int"/>
<link id="Round"/>
</seealso>
<example file="refex/ex70"/>
</element>
<element name="Truncate">
<short>Truncate the file at position</short>
<descr>
<var>Truncate</var> truncates the (opened) file <var>F</var> at the current file
position.
</descr>
<errors>Depending on the state of the <var>{$I}</var> switch, a runtime error can be
generated if there is an error. In the <var>{$I-}</var> state, use <var>IOResult</var>
to check for errors.
</errors>
<seealso>
<link id="Append"/>
<link id="Filepos"/>,
<link id="Seek"/>
</seealso>
<example file="refex/ex71"/>
</element>
<element name="Upcase">
<short>Convert a string to all uppercase.</short>
<descr>
<var>Upcase</var> returns the uppercase version of its argument <var>C</var>.
If its argument is a string, then the complete string is converted to
uppercase. The type of the returned value is the same as the type of the
argument.
</descr>
<errors>None.
</errors>
<seealso>
<link id="Lowercase"/>
</seealso>
<example file="refex/ex72"/>
</element>
<element name="Val">
<short>Calculate numerical/enumerated value of a string.</short>
<descr>
<p>
<var>Val</var> converts the value represented in the string <var>S</var> to a numerical
value or an enumerated valye, and stores this value in the variable <var>V</var>, which
can be of type <var>Longint</var>, <var>Real</var> and <var>Byte</var> or
any enumerated type. If the conversion isn't succesfull, then the parameter
<var>Code</var> contains the index of the character in <var>S</var> which
prevented the conversion.
The string <var>S</var> is allowed to contain spaces in the beginning.
</p>
<p>The string <var>S</var> can contain a number in decimal, hexadecimal, binary
or octal format, as described in the language reference. For enumerated
values, the string must be the name of the enumerated value. The name is
searched case insensitively.
</p>
<p>The conversion to enumerated exists only as of version 2.3.1 (or later) of the compiler.
</p>
</descr>
<errors>If the conversion doesn't succeed, the value of <var>Code</var> indicates the
position where the conversion went wrong. The value of <var>V</var> is then
undefined.
</errors>
<seealso>
<link id="Str"/>
</seealso>
<example file="refex/ex74"/>
</element>
<element name="Write">
<short>Write variable to a text file</short>
<descr>
<var>Write</var> writes the contents of the variables <var>V1</var>, <var>V2</var> etc. to
the file <var>F</var>. <var>F</var> can be a typed file, or a <var>Text</var> file.
If <var>F</var> is a typed file, then the variables <var>V1</var>, <var>V2</var> etc. must
be of the same type as the type in the declaration of <var>F</var>. Untyped files
are not allowed.
If the parameter <var>F</var> is omitted, standard output is assumed.
If <var>F</var> is of type <var>Text</var>, then the necessary conversions are done
such that the output of the variables is in human-readable format.
This conversion is done for all numerical types. Strings are printed exactly
as they are in memory, as well as <var>PChar</var> types.
The format of the numerical conversions can be influenced through
the following modifiers:
<var>OutputVariable : NumChars [: Decimals ] </var>
This will print the value of <var>OutputVariable</var> with a minimum of
<var>NumChars</var> characters, from which <var>Decimals</var> are reserved for the
decimals. If the number cannot be represented with <var>NumChars</var> characters,
<var>NumChars</var> will be increased, until the representation fits. If the
representation requires less than <var>NumChars</var> characters then the output
is filled up with spaces, to the left of the generated string, thus
resulting in a right-aligned representation.
If no formatting is specified, then the number is written using its natural
length, with nothing in front of it if it's positive, and a minus sign if
it's negative.
Real numbers are, by default, written in scientific notation.
</descr>
<errors>If an error occurs, a run-time error is generated. This behavior can be
controlled with the <var>{$I}</var> switch.
</errors>
<seealso>
<link id="WriteLn"/>
<link id="Read"/>
<link id="Readln"/>
<link id="Blockwrite"/>
</seealso>
</element>
<element name="WriteLn">
<short>Write variable to a text file and append newline</short>
<descr>
<p>
<var>WriteLn</var> does the same as <link id="Write"/> for text files, and emits a
Carriage Return - LineFeed character pair after that.
If the parameter <var>F</var> is omitted, standard output is assumed.
If no variables are specified, a Carriage Return - LineFeed character pair
is emitted, resulting in a new line in the file <var>F</var>.
</p>
<remark>Under linux and unix, the Carriage Return character is omitted, as
customary in Unix environments.
</remark>
</descr>
<errors>If an error occurs, a run-time error is generated. This behavior can be
controlled with the <var>{$I}</var> switch.
</errors>
<seealso>
<link id="Write"/>
<link id="Read"/>
<link id="Readln"/>
<link id="Blockwrite"/>
</seealso>
<example file="refex/ex75"/>
</element>
<!-- range type Visibility: default -->
<element name="ShortInt">
<short>A signed 8-bits integer</short>
</element>
<!-- range type Visibility: default -->
<element name="SmallInt">
<short>A signed 16-bits integer</short>
</element>
<!-- range type Visibility: default -->
<element name="Longint">
<short>A signed 32-bits integer</short>
</element>
<!-- range type Visibility: default -->
<element name="Byte">
<short>An unsigned 8-bits integer</short>
</element>
<!-- range type Visibility: default -->
<element name="Word">
<short>An unsigned 16-bits integer</short>
</element>
<!-- alias type Visibility: default -->
<element name="DWord">
<short>An unsigned 32-bits integer</short>
</element>
<!-- alias type Visibility: default -->
<element name="Cardinal">
<short>An unsigned 32-bits integer.</short>
</element>
<!-- alias type Visibility: default -->
<element name="Integer">
<short>A signed 16-bits integer</short>
<descr>The system unit defines <var>Integer</var> as a signed 16-bit integer.
But when <var>DELPHI</var> or <var>OBJFPC</var> mode are active, then
the <file>objpas</file> unit redefines <var>Integer</var> as a 32-bit
integer.
</descr>
</element>
<!-- pointer type Visibility: default -->
<element name="PChar">
<short>Pointer to null-terminated string.</short>
<descr>Or the same as a pointer to an array of char. See the reference manual for
more information about this type.
</descr>
</element>
<!-- pointer type Visibility: default -->
<element name="PPChar">
<short>Pointer to an array of pointers to null-terminated strings.</short>
</element>
<!-- alias type Visibility: default -->
<element name="TAnsiChar">
<short>Alias for 1-byte sized char.</short>
</element>
<!-- alias type Visibility: default -->
<element name="AnsiChar">
<short>Alias for 1-byte sized char.</short>
</element>
<!-- alias type Visibility: default -->
<element name="PAnsiChar">
<short>Alias for <link id="PChar"/> type.</short>
</element>
<!-- alias type Visibility: default -->
<element name="PPAnsiChar">
<short>Alias for <link id="PPChar"/> type.</short>
</element>
<!-- "type" alias type Visibility: default -->
<element name="UCS4Char">
<short>UCS unicode character (unsigned 32 bit word)</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PUCS4Char">
<short>Pointer to <link id="UCS4Char"/>
</short>
</element>
<!-- array type Visibility: default -->
<element name="TUCS4CharArray">
<short>Array of <link id="UCS4Char"/> characters.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PUCS4CharArray">
<short>Pointer to array of <link id="UCS4Char"/> characters.</short>
</element>
<!-- array type Visibility: default -->
<element name="UCS4String">
<short>String of <link id="UCS4Char"/> characters.</short>
</element>
<!-- "type" alias type Visibility: default -->
<element name="UTF8String">
<short>UTF-8 unicode (ansi) string.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PUTF8String">
<short>Pointer to <link id="UTF8String"/>
</short>
</element>
<!-- alias type Visibility: default -->
<element name="Currency">
<short>Currency type.</short>
</element>
<!-- "type" alias type Visibility: default -->
<element name="HRESULT">
<short>32-Bit signed integer.</short>
</element>
<!-- "type" alias type Visibility: default -->
<element name="TDateTime">
<short>Encoded Date-Time type.</short>
</element>
<!-- "type" alias type Visibility: default -->
<element name="Error">
<short>Generate run-time error</short>
<descr>
<var>Error</var> generates a run-time error with an exit code corresponding
to <var>RunTimeError</var>. This function is implemented for Delphi
compatibility, and is not used by the Free Pascal Run-Time Library.
</descr>
<seealso>
<link id="RunError"/>
<link id="Halt"/>
</seealso>
</element>
<!-- pointer type Visibility: default -->
<element name="PSingle">
<short>Pointer to single-sized float value.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PDouble">
<short>Pointer to double-sized float value.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PCurrency">
<short>Pointer to currency type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PExtended">
<short>Pointer to extended-sized float value.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PSmallInt">
<short>Pointer to <link id="smallint"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PShortInt">
<short>Pointer to <link id="shortint"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PInteger">
<short>Pointer to <link id="integer"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PByte">
<short>Pointer to <link id="byte"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PWord">
<short>Pointer to <link id="word"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PDWord">
<short>Pointer to <link id="DWord"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PLongWord">
<short>Pointer to <var>LongWord</var> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PLongint">
<short>Pointer to <link id="Longint"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PCardinal">
<short>Pointer to <link id="Cardinal"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PQWord">
<short>Pointer to <var>QWord</var> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PInt64">
<short>Pointer to <var>Int64</var> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPtrInt">
<short>Pointer to <link id="PtrInt"/> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PSizeInt">
<short>Pointer to a <link id="SizeInt"/> type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPointer">
<short>Pointer to a pointer type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPPointer">
<short>Pointer to a <link id="PPointer"/> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PBoolean">
<short>Pointer to a Boolean type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PWordBool">
<short>Pointer to a <var>WordBool</var> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PLongBool">
<short>Pointer to a <var>LongBool</var> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PShortString">
<short>Pointer to a shortstring type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PAnsiString">
<short>Pointer to an ansistring type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PDate">
<short>Pointer to a <link id="TDateTime"/> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PError">
<short>Pointer to an <link id="Error"/> type.</short>
</element>
<!-- alias type Visibility: default -->
<element name="WChar">
<short>Wide char (16-bit sized char)</short>
</element>
<!-- enumeration type Visibility: default -->
<element name="TTextLineBreakStyle">
<short>Character(s) separating lines in text (files).</short>
<descr>
<p>
<code>tlbsLF: #10
tlbsCRLF: #13#10
tlbsCR: #13</code>
</p>
</descr>
</element>
<!-- enumeration value Visibility: default -->
<element name="TTextLineBreakStyle.tlbsLF">
<short>Line-feed only (#10, unix style)</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="TTextLineBreakStyle.tlbsCRLF">
<short>Carriage-return, line-feed (#13#30, Windows style)</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="TTextLineBreakStyle.tlbsCR">
<short>Carriage-return (#13, Mac-OS style)</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TProcedure">
<short>Simple procedural type.</short>
</element>
<!-- constant Visibility: default -->
<element name="MaxSIntValue">
<short>Maximum String-size value.</short>
</element>
<!-- constant Visibility: default -->
<element name="MaxUIntValue">
<short>Maximum unsigned integer value.</short>
</element>
<!-- constant Visibility: default -->
<element name="maxLongint">
<short>Maximum longint value.</short>
</element>
<!-- constant Visibility: default -->
<element name="maxSmallint">
<short>Maximum smallint value.</short>
</element>
<!-- constant Visibility: default -->
<element name="maxint">
<short>Maximum integer value.</short>
</element>
<!-- array type Visibility: default -->
<element name="IntegerArray">
<short>Generic array of integer. </short>
</element>
<!-- pointer type Visibility: default -->
<element name="PIntegerArray">
<short>Pointer to <link id="IntegerArray"/> type</short>
</element>
<!-- array type Visibility: default -->
<element name="PointerArray">
<short>Generic pointer array.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPointerArray">
<short>Pointer to <link id="PointerArray"/> type</short>
</element>
<!-- array type Visibility: default -->
<element name="TBoundArray">
<short>Dynamic array of integer.</short>
</element>
<!-- array type Visibility: default -->
<element name="TPCharArray">
<short>Array of PChar</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPCharArray">
<short>Pointer to <link id="TPCharArray"/> type.</short>
</element>
<!-- constant Visibility: default -->
<element name="Max_Frame_Dump">
<short>Maximum number of frames to show in error frame dump.</short>
</element>
<!-- constant Visibility: default -->
<element name="ExitProc">
<short>Exit procedure pointer.</short>
</element>
<!-- constant Visibility: default -->
<element name="Erroraddr">
<short>Address where the last error occurred.</short>
</element>
<!-- constant Visibility: default -->
<element name="Errorcode">
<short>Last error code.</short>
</element>
<!-- constant Visibility: default -->
<element name="fmClosed">
<short>File mode: File is closed.</short>
</element>
<!-- constant Visibility: default -->
<element name="fmInput">
<short>File mode: File is open for reading.</short>
</element>
<!-- constant Visibility: default -->
<element name="fmOutput">
<short>File mode: File is open for writing.</short>
</element>
<!-- constant Visibility: default -->
<element name="fmInOut">
<short>File mode: File is open for reading and writing.</short>
</element>
<!-- constant Visibility: default -->
<element name="fmAppend">
<short>File mode: File is open for writing, appending to the end.</short>
</element>
<!-- constant Visibility: default -->
<element name="ProcessID">
<short>Current process ID.</short>
</element>
<!-- constant Visibility: default -->
<element name="Filemode">
<short>Default file mode for untyped files.</short>
</element>
<!-- constant Visibility: default -->
<element name="CmdLine">
<short>Current command-line.</short>
<p>
<var>Cmdline</var> returns a pointer to the current command line. The ASCIIZ
string <var>cmdline</var> points to contains the command line arguments, separated
by spaces. Basically, this is the DOS convention. <var>Cmdline</var> can safey be used
under Unix. Command line arguments containing spaces will be surrounded by double
quotes, as is done in the Dos/Windows tradition.
Because of this, the use of <var>cmdline</var> might be undesired under Unix.</p>
<p>
<var>Cmdline</var> can be implemented either by a variable, typed constant,
function or property. Because of this, you should not to write to it, or make
a pointer point to it.</p>
</element>
<!-- constant Visibility: default -->
<element name="IsMultiThread">
<short>Indicates whether more than one thread is running in the application.</short>
</element>
<!-- constant Visibility: default -->
<element name="StackError">
<short>Indicate whether there was a stack error.</short>
</element>
<!-- variable Visibility: default -->
<element name="ExitCode">
<short>Exit code for the program, will be communicated to the OS on exit.</short>
</element>
<!-- variable Visibility: default -->
<element name="RandSeed">
<short>Seed for <link id="Random"/> function.</short>
</element>
<!-- variable Visibility: default -->
<element name="IsLibrary">
<short>
<var>True</var> if the current module is a library. Otherwise module
is an excutable</short>
</element>
<!-- variable Visibility: default -->
<element name="IsConsole">
<short>
<var>True</var> for console applications, <var>False</var> for GUI applications.</short>
</element>
<!-- variable Visibility: default -->
<element name="fpc_threadvar_relocate_proc" skip="1"/>
<!-- variable Visibility: default -->
<element name="ThreadID">
<short>Current Thread ID.</short>
</element>
<!-- variable Visibility: default -->
<element name="Output">
<short>Standard output text file.</short>
</element>
<!-- variable Visibility: default -->
<element name="Input">
<short>Standard input text file.</short>
</element>
<!-- variable Visibility: default -->
<element name="StdOut">
<short>Alias for <link id="Output"/>.</short>
</element>
<!-- variable Visibility: default -->
<element name="StdErr">
<short>Standard diagnostic output text file.</short>
</element>
<!-- variable Visibility: default -->
<element name="InOutRes">
<short>Result of last I/O operation. Read-Only.</short>
</element>
<!-- variable Visibility: default -->
<element name="StackBottom">
<short>Current stack bottom.</short>
</element>
<!-- variable Visibility: default -->
<element name="StackLength">
<short>Maximum stack length.</short>
</element>
<!-- function Visibility: default -->
<element name="IndexChar0">
<short>Return index of a character in null-terminated array of char.</short>
<descr>
<var>IndexChar0</var> returns the index of the character <var>b</var> in the
null-terminated array <var>Buf</var>. At most <var>len</var> characters will
be searched, or the null character if it is encountered first. If the
character is not found, -1 is returned.
</descr>
<errors>On error, -1 is returned.
</errors>
<seealso>
<link id="IndexByte"/>
<link id="IndexChar"/>
<link id="IndexWord"/>
<link id="IndexDWord"/>
<link id="CompareChar0"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="CompareChar0">
<short>Compare two buffers character by character till a null-character is reached.</short>
<descr>
<p>
<var>CompareChar0</var> compares 2 buffers <var>buf1</var> and <var>buf2</var>
for a maximum length of <var>len</var> or till a null character is reached
in either buffer. The result depends on the contents of the buffers:
</p>
<dl>
<dt>&lt; 0</dt>
<dd>If <var>buf1</var> contains a character less than the
corresponding character in <var>buf2</var>.</dd>
<dt>0</dt>
<dd>If both buffers are equal</dd>
<dt>&gt; 0</dt>
<dd>If <var>buf1</var> contains a character greater than the
corresponding character in <var>buf2</var>.</dd>
</dl>
</descr>
<errors>None.
</errors>
<seealso>
<link id="CompareByte"/>
<link id="CompareChar"/>
<link id="CompareDWord"/>
<link id="CompareWord"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="prefetch">
<short>Prefetch a memory location</short>
<descr>
<var>Prefetch</var> can be used to optimize the CPU behaviour by already
loading a memory location. It is mainly used as a hint for those processors
that support it.
</descr>
<errors>None.
</errors>
</element>
<!-- array type Visibility: default -->
<element name="real48">
<short>TP compatible real type (6 bytes) definition</short>
</element>
<!-- function Visibility: default -->
<element name="strpas">
<short>Convert a null-terminated string to a shortstring.</short>
<descr>Converts a null terminated string in <var>P</var> to a Pascal string, and
returns
this string. The string is truncated at 255 characters.
</descr>
<errors>None.
</errors>
</element>
<!-- function Visibility: default -->
<element name="strlen">
<short>Length of a null-terminated string.</short>
<descr>Returns the length of the null-terminated string <var>P</var>.
</descr>
<errors>None.
</errors>
</element>
<!-- function Visibility: default -->
<element name="Space">
<short>Return a string of spaces</short>
<descr>
<var>Space</var> returns a shortstring with length <var>B</var>, consisting
of spaces.
</descr>
<seealso>
<link id="StringOfChar"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="UniqueString">
<short>Make sure reference count of string is 1</short>
<descr>
<var>UniqueString</var> ensures that the ansistring <var>S</var> has
reference count 1. It makes a copy of <var>S</var> if this is necesary, and
returns the copy in <var>S</var>
</descr>
<errors>None.
</errors>
</element>
<!-- procedure Visibility: default -->
<element name="SetTextLineEnding">
<short>Set the end-of-line character for the given text file.</short>
<descr>
<var>SetTextLineEnding</var> sets the end-of-line character for the text
file <var>F</var> to <var>Ending</var>. By default, this is the string
indicated by <link id="DefaultTextLineBreakStyle"/>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="DefaultTextLineBreakStyle"/>
<link id="TTextLineBreakStyle"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="get_frame">
<short>Return the current frame</short>
<descr>
<var>get_frame</var> returns a pointer to the current stack frame.
</descr>
<seealso>
<link id="get_caller_addr"/>
<link id="get_caller_frame"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="get_caller_addr">
<short>Return the address of the caller.</short>
<descr>
<var>get_caller_frame</var> returns a pointer to address ( the return
address) of the caller of the routine which has as frame <var>framebp</var>.
</descr>
<seealso>
<link id="get_frame"/>
<link id="get_caller_frame"/>
<link id="Dump_Stack"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="get_caller_frame">
<short>Return the frame pointer of the caller</short>
<descr>
<var>get_caller_frame</var> returns a pointer to the frame of the caller
of the routine which has as frame <var>framebp</var>.
</descr>
<seealso>
<link id="get_caller_addr"/>
<link id="get_frame"/>
<link id="Dump_Stack"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="Dump_Stack">
<short>Dump stack to the given text file.</short>
<descr>
<var>Dump_Stack</var> prints a stack dump to the file <var>f</var>, with
base frame pointer <var>bp</var>
</descr>
<errors>The file <var>f</var> must be opened for writing or an error will occur.
</errors>
<seealso>
<link id="get_caller_addr"/>
<link id="get_caller_frame"/>
<link id="get_frame"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="AddExitProc">
<short>Add an exit procedure to the exit procedure chain.</short>
<descr>
<var>AddExitProc</var> adds <var>Proc</var> to the exit procedure chain. At
program exit, all procedures added in this way will be called in reverse
order.
</descr>
<errors>None.
</errors>
<seealso>
<link id="ExitProc"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="SysInitExceptions">
<short>Initialize exceptions.</short>
<descr>
<var>SysInitExceptions</var> initializes the exception system. This
procedure should never be called directly, it is taken care of by the RTL.
</descr>
</element>
<!-- procedure Visibility: default -->
<element name="SysInitStdIO">
<short>Initialize standard input and output.</short>
<descr>
<var>SysInitStdIO</var> initializes the standard input and output files:
<link id="Output"/>, <link id="Input"/> and <link id="StdErr"/>. This
routine is called by the initialization code of the system unit, there
should be no need to call it directly.
</descr>
</element>
<!-- procedure Visibility: default -->
<element name="SysResetFPU">
<short>Reset the floating point unit.</short>
<descr>
<var>SysResetFPU</var> resets the floating point unit. There should normally
be no need to call this unit; the compiler itself takes care of this.
</descr>
</element>
<!-- procedure Visibility: default -->
<element name="AbstractError">
<short>Generate an abstract error.</short>
<descr>
<var>AbstractError</var> generates an abstract error (run-time error 211).
If the <link id="AbstractErrorProc"/> constant is set, it will be called
instead.
</descr>
<errors>This routine causes a run-time error 211.
</errors>
<seealso>
<link id="AbstractErrorProc"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysBackTraceStr">
<short>Format an address suitable for inclusion in a backtrace</short>
<descr>
<var>SysBackTraceStr</var> will create a string representation of the
address <var>Addr</var>, suitable for inclusion in a stack backtrace.
</descr>
<errors>None.
</errors>
</element>
<!-- procedure Visibility: default -->
<element name="SysAssert">
<short>Standard Assert failure implementation</short>
<descr>
<var>SysAssert</var> is the standard implementation of the assertion failed
code. It is the default value of the <var>AssertErrorProc</var> constant.
It will print the assert message <var>Msg</var> together with the filename
<var>FName</var> and linenumber <var>LineNo</var> to standard error output
(<var>StdErr</var>) and will halt the program with exit code 227.
The error address <var>ErrorAddr</var> is ignored.
</descr>
<seealso>
<link id="AssertErrorProc"/>
</seealso>
</element>
<!-- function type Visibility: default -->
<element name="TBackTraceStrFunc">
<short>Type for formatting of backtrace dump.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TErrorProc">
<short>Standard error handler procedural type.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TAbstractErrorProc">
<short>Abstract error handler procedural type.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TAssertErrorProc">
<short>Assert error handler procedural type.</short>
</element>
<!-- constant Visibility: default -->
<element name="BackTraceStrFunc">
<short>Standard backtrace formatting routine</short>
<descr>This handler is called to get a standard format for the backtrace routine.
</descr>
</element>
<!-- constant Visibility: default -->
<element name="ErrorProc">
<short>Custom error handling procedure.</short>
<descr>
<p>If set, the <var>ErrorProc</var> constant is used when a run-time error
occurs. If it is not set, then the standard error handling is done: a stack
dump is performed, and the program exits with the indicated error code.
</p>
<p>The <file>SysUtils</file> unit sets this procedure and raises an exception
in its handler.
</p>
</descr>
<seealso>
<link id="TErrorProc"/>
<link id="Halt"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="AbstractErrorProc">
<short>Custom abstract error handling procedure</short>
<descr>
<p>If set, the <var>AbstractErrorProc</var> constant is used when an abstract
error occurs. If it is not set, then the standard error handling is done:
A stack dump is performed, and the program exits with error code 211.
</p>
<p>The <file>SysUtils</file> unit sets this procedure and raises an exception
in its handler.
</p>
</descr>
<seealso>
<link id="TAbstractErrorProc"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="AssertErrorProc">
<short>Custom assert error handling procedure</short>
<descr>
<p>If set, the <var>AbstractErrorProc</var> constant is used when an assert
error occurs. If it is not set, then the standard error handling is done:
The assertion error message is printed, together with the location of the
assertion, and A stack dump is performed, and the program exits with error code
227.
</p>
<p>The <file>SysUtils</file> unit sets this procedure and raises an exception
in its handler.
</p>
</descr>
<seealso/>
</element>
<!-- record type Visibility: default -->
<element name="jmp_buf">
<short>Record type to store processor information.</short>
<seealso>
<link id="setjmp"/>
<link id="longjmp"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="jmp_buf.ebx">
<short>EBX register.</short>
</element>
<!-- variable Visibility: default -->
<element name="jmp_buf.esi">
<short>ESI register</short>
</element>
<!-- variable Visibility: default -->
<element name="jmp_buf.edi">
<short>EDI register</short>
</element>
<!-- variable Visibility: default -->
<element name="jmp_buf.bp">
<short>BP register</short>
</element>
<!-- variable Visibility: default -->
<element name="jmp_buf.sp">
<short>SP register</short>
</element>
<!-- variable Visibility: default -->
<element name="jmp_buf.pc">
<short>PC register</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PJmp_buf">
<short>Pointer to <link id="jmp_buf"/> record</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtInstanceSize">
<short>VMT Layout: Location of class instance size in VMT</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtParent">
<short>VMT Layout: location of pointer to parent VMT.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtClassName">
<short>VMT Layout: location of class name.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtDynamicTable">
<short>VMT Layout: location of dynamic methods table.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtMethodTable">
<short>VMT Layout: Method table start.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtFieldTable">
<short>VMT Layout: Location of fields table.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtTypeInfo">
<short>VMT Layout: Location of class type information.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtInitTable">
<short>VMT Layout: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtAutoTable">
<short>VMT layout: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtIntfTable">
<short>VMT layout: Interface table</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtMsgStrPtr">
<short>VMT layout: message strings table.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtMethodStart">
<short>VMT layout: start of method table.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtDestroy">
<short>VMT Layout: Location of destructor pointer.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtNewInstance">
<short>VMT Layout: location of NewInstance method.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtFreeInstance">
<short>VMT Layout: location of FreeInstance method.</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtSafeCallException">
<short>VMT Layout: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtDefaultHandler">
<short>VMT Layout: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtAfterConstruction">
<short>VMT Layout: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtBeforeDestruction">
<short>VMT Layout: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="vmtDefaultHandlerStr">
<short>VMT Layout: ?</short>
</element>
<!-- alias type Visibility: default -->
<element name="TextFile">
<short>Alias for <var>Text</var> file type.</short>
</element>
<!-- object Visibility: default -->
<element name="TObject">
<short>Parent class for all classes.</short>
<descr>
<var>TObject</var> is used as the parent class for all class definitions.
It contains some standard methods that are available in all classes.
</descr>
<seealso>
<link id="TClass"/>
</seealso>
</element>
<!-- "class of" type Visibility: default -->
<element name="TClass">
<short>Class of <link id="TObject"/>.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PClass">
<short>Pointer to <link id="TClass"/>
</short>
</element>
<!-- record type Visibility: default -->
<element name="TMsgStrTable">
<short>Record used in string message handler table.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMsgStrTable.name">
<short>Message name</short>
</element>
<!-- variable Visibility: default -->
<element name="TMsgStrTable.method">
<short>Method to call</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PMsgStrTable">
<short>Pointer to array of <link id="TMsgStrTable"/> records.</short>
</element>
<!-- record type Visibility: default -->
<element name="TStringMessageTable">
<short>String message table container for class.</short>
<descr>Record used to describe the string messages handled by a class.
It consists of a count, followed by an array of <link id="TMsgStrTable"/>
records.
</descr>
<seealso>
<link id="TMsgStrTable"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TStringMessageTable.count">
<short>Number of messages in the string table.</short>
<descr/>
<seealso/>
</element>
<!-- variable Visibility: default -->
<element name="TStringMessageTable.msgstrtable">
<short>First <link id="TMsgStrTable"/> record.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pstringmessagetable">
<short>Pointer to <link id="TStringMessageTable"/> record.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PGuid">
<short>Pointer to <link id="TGUID"/> type. </short>
</element>
<!-- record type Visibility: default -->
<element name="TGuid">
<short>Standard GUID representation type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pinterfaceentry">
<short>Pointer to <link id="tinterfaceentry"/> record.</short>
</element>
<!-- record type Visibility: default -->
<element name="tinterfaceentry">
<short>Interfaces table entry.</short>
<descr>
<var>tinterfaceentry</var> is used to store the list of Interfaces of a
class. This list is stored as an array of <var>tinterfaceentry</var>
records.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="tinterfaceentry.IID">
<short>Unique GUID for this interface.</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfaceentry.VTable">
<short>Pointer to interface VTable.</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfaceentry.IOffset">
<short>Offset</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfaceentry.IIDStr">
<short>Pointer to GUID string. Always assigned for COM.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pinterfacetable">
<short>Pointer to <link id="tinterfacetable"/> record.</short>
</element>
<!-- record type Visibility: default -->
<element name="tinterfacetable">
<short>Record to store list of interfaces of a class.</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfacetable.EntryCount">
<short>Number of interfaces.</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfacetable.Entries">
<short>Array of <link id="tinterfaceentry"/> records.</short>
</element>
<!-- object Visibility: default -->
<element name="TObject">
<short>Base class of all classes.</short>
<descr>
<var>TObject</var> is the parent root class for all classes in Object
Pascal. If a class has no parent class explicitly declared, it is dependent
on <var>TObject</var>. <var>TObject</var> introduces class methods that deal
with the class' type information, and contains all necessary methods to
create an instance at runtime, and to dispatch messages to the correct
method (both string and integer messages).
</descr>
<seealso>
<link id="TClass"/>
</seealso>
</element>
<!-- constructor Visibility: public -->
<element name="TObject.Create">
<short>
<var>TObject</var> Constructor</short>
<descr>
<var>Create</var> creates a new instance of <var>TObject</var>. Currently it
does nothing. It is also not virtual, so there is in principle no need to
call it directly.
</descr>
<seealso>
<link id="TObject.Destroy">Destroy</link>
</seealso>
</element>
<!-- destructor Visibility: public -->
<element name="TObject.Destroy">
<short>
<var>TObject</var> destructor.</short>
<descr>
<p>
<var>Destroy</var> is the destructor of <var>TObject</var>.
It will clean up the memory assigned to the instance. Descendent classes
should override destroy if they want to do additional clean-up. No other
destructor should be implemented.
</p>
<p>It is bad programming practice to call <var>Destroy</var> directly. It is
better to call the <link id="TObject.Free">Free</link> method, because that
one will check first if <var>Self</var> is different from <var>Nil</var>.
</p>
<p>To clean up an instance and reset the refence to the instance, it is best to
use the <link id="#rtl.sysutils.freeandnil">FreeAndNil</link> function.
</p>
</descr>
<seealso>
<link id="TObject.Create">Create</link>
<link id="TObject.Free">Free</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.newinstance">
<short>Allocate memory on the heap for a new instance</short>
<descr>
<var>NewInstance</var> allocates memory on the heap for a new instance of
the current class. If the memory was allocated, the class will be
initialized by a call to <link id="TObject.InitInstance">InitInstance</link>.
The function returns the newly initialized instance.
</descr>
<errors>If not enough memory is available, a <var>Nil</var> pointer may be returned,
or an exception may be raised.
</errors>
<seealso>
<link id="TObject.Create">Create</link>
<link id="TObject.InitInstance">InitInstance</link>
<link id="TObject.InstanceSize">InstanceSize</link>
<link id="TObject.FreeInstance">FreeInstance</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.FreeInstance">
<short>Clean up instance and free the memory reserved for the instance.</short>
<descr>
<var>FreeInstance</var> cleans up an instance of the current class, and
releases the heap memory occupied by the class instance.
</descr>
<seealso>
<link id="TObject.Destroy">Destroy</link>
<link id="TObject.InitInstance">InitInstance</link>
<link id="TObject.NewInstance">NewInstance</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.SafeCallException">
<short>Handle exception object</short>
<descr>
<var>SafeCallException</var> should be overridden to handle exceptions in a
method marked with the savecall directive. The implementation in
<var>TObject</var> simply returns zero.
</descr>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.DefaultHandler">
<short>Default handler for integer message handlers.</short>
<descr>
<var>DefaultHandler</var> is the default handler for messages. If a message
has an unknown message ID (i.e. does not appear in the table with integer
message handlers), then it will be passed to
<var>DefaultHandler</var> by the <link id="TObject.Dispatch">Dispatch</link>
method.
</descr>
<errors/>
<seealso>
<link id="TObject.Dispatch">Dispatch</link>
<link id="TObject.DefaultHandlerStr">DefaultHandlerStr</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.Free">
<short>Check for <var>Nil</var> and call destructor.</short>
<descr>
<var>Free</var> will check the <var>Self</var> pointer and calls
<link id="TObject.Destroy">Destroy</link> if it is different from
<var>Nil</var>. This is a safer method than calling <var>Destroy</var>
directly. If a reference to the object must be reset as well (a recommended
technque), then the function <link id="#rtl.sysutils.freeandnil">FreeAndNil</link> should be called.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.Destroy">Destroy</link>
<link id="#rtl.sysutils.freeandnil">FreeAndNil</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.InitInstance">
<short>Initialize a new class instance.</short>
<descr>
<var>InitInstance</var> initializes the memory pointer to by
<var>Instance</var>. This means that the VMT is initialized, and the
interface pointers are set up correctly.
The function returns the newly initialized instance.
</descr>
<seealso>
<link id="TObject.NewInstance">NewInstance</link>
<link id="TObject.Create">Create</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.CleanupInstance">
<short>Finalize the class instance.</short>
<descr>
<p>
<var>CleanUpinstance</var> finalizes the instance, i.e. takes care of all
reference counted objects, by decreasing their reference count by 1, and
freeing them if their count reaches zero.
</p>
<p>Normally, <var>CleanupInstance</var> should never be called, it is called
automatically when the object is freed with it's constructor.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.Destroy">Destroy</link>
<link id="TObject.Free">Free</link>
<link id="TObject.InitInstance">InitInstance</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.ClassInfo">
<short>Return a pointer to the type information for this class.</short>
<descr>
<var>ClassInfo</var> returns a pointer to the type information for this
class. This pointer can be used in the various type information routines.
</descr>
</element>
<!-- function Visibility: public -->
<element name="TObject.ClassType">
<short>Return a "class of" pointer for the current class</short>
<descr>
<var>ClassType</var> returns a <link id="TClass"/> class type reference for
the current class.
</descr>
<seealso>
<link id="TClass"/>
<link id="TObject.ClassInfo">ClassInfo</link>
<link id="TObject.ClassName">ClassName</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.ClassName">
<short>Return the current class name.</short>
<descr>
<var>ClassName</var> returns the class name for the current class, in
all-uppercase letters. To check for the class name, use the <link id="TObject.ClassNameIs">ClassNameIs</link> class method.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.ClassInfo">ClassInfo</link>
<link id="TObject.ClassType">ClassType</link>
<link id="TObject.ClassNameIs">ClassNameIs</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.ClassNameIs">
<short>Check whether the class name equals the given name.</short>
<descr>
<var>ClassNameIs</var> checks whether <var>Name</var> equals the class name.
It takes of case sensitivity, i.e. it converts both names to uppercase
before comparing.
</descr>
<seealso>
<link id="TObject.ClassInfo">ClassInfo</link>
<link id="TObject.ClassType">ClassType</link>
<link id="TObject.ClassName">ClassName</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.ClassParent">
<short>Return the parent class.</short>
<descr>
<var>ClassParent</var> returns the class of the parent class of the current
class. This is always different from <var>Nil</var>, except for
<var>TObject</var>.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.ClassInfo">ClassInfo</link>
<link id="TObject.ClassType">ClassType</link>
<link id="TObject.ClassName">ClassNameIs</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.InstanceSize">
<short>Return the size of an instance.</short>
<descr>
<var>InstanceSize</var> returns the number of bytes an instance takes in
memory. This is Just the memory occupied by the class structure, and does
not take into account any additional memory that might be allocated by the
constructor of the class.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.InitInstance">InitInstance</link>
<link id="TObject.ClassName">ClassName</link>
<link id="TObject.ClassInfo">ClassInfo</link>
<link id="TObject.ClassType">ClassType</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.InheritsFrom">
<short>Chck wether class is an ancestor.</short>
<descr>
<var>InheritsFrom</var> returns <var>True</var> if <var>AClass</var> is an
ancestor class from the current class, and returns false if it is not.
</descr>
<errors/>
<seealso>
<link id="TObject.ClassName">ClassName</link>
<link id="TObject.ClassInfo">ClassInfo</link>
<link id="TObject.ClassType">ClassType</link>
<link id="TClass"/>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.StringMessageTable">
<short>Return a pointer to the string message table.</short>
<descr>
<var>StringMessageTable</var> returns a pointer to the string message table,
which can be used to look up methods for dispatching a string message. It is
used by the <link id="TObject.DispatchStr">DispatchStr</link> method.
</descr>
<errors>If there are no string message handlers, nil is returned.
</errors>
<seealso>
<link id="TObject.DispatchStr">DispatchStr</link>
<link id="TObject.Dispatch">Dispatch</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.Dispatch">
<short>Dispatch an integer message</short>
<descr>
<p>
<var>Dispatch</var> looks in the message handler table for a handler that
handles <var>message</var>. The message is identified by the first dword
(cardinal) in the message structure.
</p>
<p>If no matching message handler is found, the message is passed to the
<link id="TObject.DefaultHandler">DefaultHandler</link> method, which can be
overridden by descendent classes to add custom handling of messages.
</p>
</descr>
<seealso>
<link id="TObject.DispatchStr">DispatchStr</link>
<link id="TObject.DefaultHandler">DefaultHandler</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.DispatchStr">
<short>Dispatch a string message.</short>
<descr>
<var>DispatchStr</var> extracts the message identifier from
<var>Message</var> and checks the message handler table to see if a handler
for the message is found, and calls the handler, passing along the message.
If no handler is found, the default <link id="TObject.DefaultHandlerStr">DefaultHandlerStr</link>
is called.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.DefaultHandlerStr">DefaultHandlerStr</link>
<link id="TObject.Dispatch">Dispatch</link>
<link id="TObject.DefaultHandler">DefaultHandler</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.MethodAddress">
<short>Return the address of a method</short>
<descr>
<var>MethodAddress</var> returns the address of a method, searching the
method by its name. The <var>Name</var> parameter specifies which method
should be taken. The search is conducted in a case-insensitive manner.
</descr>
<errors>If no matching method is found, <var>Nil</var> is returned.
</errors>
<seealso>
<link id="TObject.MethodName">MethodName</link>
<link id="TObject.FieldAddress">FieldAddress</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.MethodName">
<short>Return the name of a method.</short>
<descr>
<var>MethodName</var> searches the VMT for a method with the specified
<var>address</var> and returns the name of the method.
</descr>
<errors>If no method with the matching address is found, an empty string is
returned.
</errors>
<seealso>
<link id="TObject.MethodAddress">MethodAddress</link>
<link id="TObject.FieldAddress">FieldAddress</link>
</seealso>
</element>
<!-- function Visibility: public -->
<element name="TObject.FieldAddress">
<short>Return the address of a field.</short>
<descr>
<var>FieldAddress</var> returns the address of the field with name <var>name</var>.
The address is the address of the field in the current class instance.
</descr>
<errors>If no field with the specified name is found, <var>Nil</var> is returned.
</errors>
<seealso>
<link id="TObject.MethodAddress">MethodAddress</link>
<link id="TObject.MethodName">MethodName</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.AfterConstruction">
<short>Method called after the constructor was called.</short>
<descr>
<var>AfterConstruction</var> is a method called after the constructor was
called. It does nothing in the implementation of <var>TObject</var> and must
be overridden by descendent classes to provide specific behaviour that is
executed after the constructor has finished executing. (for instance, call
an event handler)
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.BeforeDestruction">BeforeDestruction</link>
<link id="TObject.Create">Create</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.BeforeDestruction">
<short>Method called before the destructor is called.</short>
<descr>
<var>BeforeDestruction</var> is a method called before the destructor is
called. It does nothing in the implementation of <var>TObject</var> and must
be overridden by descendent classes to provide specific behaviour that is
executed before the destructor has finished executing. (for instance, call
an event handler)
</descr>
<errors>None.
</errors>
<seealso>
<link id="TObject.AfterConstruction">AfterConstruction</link>
<link id="TObject.Destroy">Destroy</link>
<link id="TObject.Free">Free</link>
</seealso>
</element>
<!-- procedure Visibility: public -->
<element name="TObject.DefaultHandlerStr">
<short>Default handler for string messages.</short>
<descr>
<var>DefaultHandlerStr</var> is called for string messages which have no
handler associated with them in the string message handler table. The
implementation of <var>DefaultHandlerStr</var> in <var>TObject</var> does
nothing and mut be overridden by descendent classes to provide specific
message handling behaviour.
</descr>
<seealso>
<link id="TObject.DispatchStr">DispatchStr</link>
<link id="TObject.Dispatch">Dispatch</link>
<link id="TObject.DefaultHandler">DefaultHandler</link>
</seealso>
</element>
<!-- procedure type Visibility: default -->
<element name="TExceptProc">
<short>Exception handler procedural type</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PExceptObject">
<short>Pointer to Exception handler procedural type <link id="TExceptProc"/>
</short>
<descr/>
<seealso/>
</element>
<!-- record type Visibility: default -->
<element name="TExceptObject">
<short>Exception object</short>
<descr>
<var>TExceptObject</var> is the exception description record which is found
on the exception stack.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.FObject">
<short>Exception instance.</short>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.Addr">
<short>Address where exception occurred</short>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.Frame">
<short>Exception frame where exception occurred</short>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.Next">
<short>Next exception object on the stack.</short>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.refcount">
<short>Reference count for this exception object</short>
</element>
<!-- constant Visibility: default -->
<element name="ExceptProc">
<short>Current exception handling procedure.</short>
<descr>
<p>This constant points to the current exception handling procedure.
This routine is called when an unhandled exception occurs, i.e. an exception
that is not stopped by a except block.
</p>
<p>If the handler is not set, the RTL will emit a run-time error 217 when an
unhandler exception occurs.
</p>
<p>It is set by the <link id="#rtl.sysutils">sysutils</link> unit.
</p>
</descr>
</element>
<!-- constant Visibility: default -->
<element name="RaiseProc">
<short>Procedure to raise an exception.</short>
</element>
<!-- function Visibility: default -->
<element name="RaiseList">
<short>List of currently raised exceptions.</short>
<descr>
<var>RaiseList</var> returns a pointer to the list of currently raised
exceptions (i.e. a pointer to the first exception block.
</descr>
<errors/>
<seealso/>
</element>
<!-- function Visibility: default -->
<element name="AcquireExceptionObject">
<short>Obtain a reference to the current exception object</short>
<descr>
<p>
<var>AcquireExceptionObject</var> returns the current exception object.
It raises the reference count of the exception object, so it will not be
freed. Calling this method is only valid within an except block.
</p>
<p>The effect of this function is countered by re-raising an exception
via <var>raise;</var>
</p>
<p>To make sure that the exception object is released when it is no longer
needed, <link id="ReleaseExceptionObject"/> must be called when the
reference is no longer needed.
</p>
</descr>
<errors>If there is no current exception, a run-time error 231 will occur.
</errors>
<seealso>
<link id="ReleaseExceptionObject"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="ReleaseExceptionObject">
<short>Decrease the reference count of the current exception object.</short>
<descr>
<p>
<var>ReleaseExceptionObject</var> decreases the reference count of the
current exception object. This should be called whenever a reference to the
exception object was obtained via the <link id="AcquireExceptionObject"/>
call.
</p>
<p>Calling this method is only valid within an except block.
</p>
</descr>
<errors>If there is no current exception object, a run-time error 231 will occur.
</errors>
<seealso>
<link id="AcquireExceptionObject"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="vtInteger">
<short>TVarRec type: Integer</short>
</element>
<!-- constant Visibility: default -->
<element name="vtBoolean">
<short>TVarRec type: Boolean</short>
</element>
<!-- constant Visibility: default -->
<element name="vtChar">
<short>TVarRec type: Char</short>
</element>
<!-- constant Visibility: default -->
<element name="vtExtended">
<short>TVarRec type: Extended</short>
</element>
<!-- constant Visibility: default -->
<element name="vtString">
<short>TVarRec type: String</short>
</element>
<!-- constant Visibility: default -->
<element name="vtPointer">
<short>TVarRec type: pointer</short>
</element>
<!-- constant Visibility: default -->
<element name="vtPChar">
<short>TVarRec type: PChar</short>
</element>
<!-- constant Visibility: default -->
<element name="vtObject">
<short>TVarRec type: Object instance</short>
</element>
<!-- constant Visibility: default -->
<element name="vtClass">
<short>TVarRec type: Class type</short>
</element>
<!-- constant Visibility: default -->
<element name="vtWideChar">
<short>TVarRec type: Widechar</short>
</element>
<!-- constant Visibility: default -->
<element name="vtPWideChar">
<short>TVarRec type: PWideChar</short>
</element>
<!-- constant Visibility: default -->
<element name="vtAnsiString">
<short>TVarRec type: Ansistring</short>
</element>
<!-- constant Visibility: default -->
<element name="vtCurrency">
<short>TVarRec type: Currency</short>
</element>
<!-- constant Visibility: default -->
<element name="vtVariant">
<short>TVarRec type: Variant</short>
</element>
<!-- constant Visibility: default -->
<element name="vtInterface">
<short>TVarRec type: Interface</short>
</element>
<!-- constant Visibility: default -->
<element name="vtWideString">
<short>TVarRec type: WideString</short>
</element>
<!-- constant Visibility: default -->
<element name="vtInt64">
<short>TVarRec type: Int64 (signed 64-bit integer)</short>
</element>
<!-- constant Visibility: default -->
<element name="vtQWord">
<short>TVarRec type: QWord (unsigned 64-bit integer)</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PVarRec">
<short>Pointer to <link id="TVarRec"/> type.</short>
</element>
<!-- record type Visibility: default -->
<element name="TVarRec">
<short>Record describing an element in an array of const</short>
<descr>
<var>TVarRec</var> is a record generated by the compiler for each element in
a <var>array of const</var> call. The procedure that receives the constant
array receives an array of <var>TVarRec</var> elements, with lower bound zero
and high bound equal to the number of elements in the array minus one
(as returned by <var>High(Args)</var>)
</descr>
<seealso/>
</element>
<!-- alias type Visibility: default -->
<element name="tdynarrayindex">
<short>Type with the correct size for index into a dynamic array.</short>
<descr>A variable of type <var>tdynarrayindex</var> will always have the correct
size, suitable for serving as an index in a dynamic array.
</descr>
</element>
<!-- pointer type Visibility: default -->
<element name="pdynarrayindex">
<short>Pointer to <link id="tdynarrayindex"/> type.</short>
</element>
<!-- array type Visibility: default -->
<element name="fpc_big_chararray" skip="1">
<short>Array of char.</short>
<descr/>
<seealso/>
</element>
<!-- alias type Visibility: default -->
<element name="fpc_small_set" skip="1">
<short>Type with the size of a small set</short>
</element>
<!-- array type Visibility: default -->
<element name="fpc_normal_set" skip="1">
<short>Type with the size of a normal set</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PMemoryManager">
<short>Pointer to <link id="TMemoryManager"/> record</short>
</element>
<!-- record type Visibility: default -->
<element name="TMemoryManager">
<short>Record describing the current memory manager</short>
<descr>
<var>TMemoryManager</var> describes the memory manager. For more information
about the memory manager, see the programmer's reference.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.NeedLock">
<short>Does the memory manager require a lock</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.Getmem">
<short>Function called when memory must be allocated on the heap.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.Freemem">
<short>Function called when previously allocated memory can be freed again.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.FreememSize">
<short>Function called when previously allocated memory with a known size can be freed again.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.AllocMem">
<short>Same as getmem, but additionally clear the allocated memory (filled with 0 bytes).</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.ReAllocMem">
<short>Handler called when an allocated memory block should be resized</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.MemSize">
<short>Return the size of a memory block.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.GetHeapStatus">
<short>Handler called when the heap status must be reported.</short>
</element>
<element name="GetHeapStatus">
<short>Return the memory manager heap status.</short>
</element>
<!-- record type Visibility: default -->
<element name="TMemoryMutexManager">
<short>Record describing the mutex manager for the heap.</short>
<descr>When the heapmanager needs a lock, then the mutex manager is used to handle
the lock.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryMutexManager.MutexInit">
<short>Initialize the mutex</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryMutexManager.MutexDone">
<short>Finalize (i.e. dispose of) the mutex.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryMutexManager.MutexLock">
<short>Lock the mutex</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryMutexManager.MutexUnlock">
<short>Unlock the mutex.</short>
</element>
<!-- procedure Visibility: default -->
<element name="SetMemoryMutexManager">
<short>Procedure to set the mutex manager.</short>
<descr>
<var>SetMemoryMutexManager</var> sets the mutex manager used by the memory
manager to <var>MutexMgr</var>. The current mutex manager is returned in
<var>MutexMgr</var>
</descr>
<errors>None.
</errors>
<seealso>
<link id="TMemoryMutexManager"/>
<link id="SetMemoryManager"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="growheapsizesmall">
<short>Fixed size small blocks grow rate</short>
</element>
<!-- constant Visibility: default -->
<element name="growheapsize1">
<short>Grow rate for block less than 256 Kb.</short>
</element>
<!-- constant Visibility: default -->
<element name="growheapsize2">
<short>Grow rate for block larger than 256 Kb.</short>
</element>
<!-- variable Visibility: default -->
<element name="ReturnNilIfGrowHeapFails">
<short>Describe behaviour if getmem fails.</short>
<descr>
<var>ReturnNilIfGrowHeapFails</var> describes what happens if there is no
more memory available from the operating system. if set to <var>True</var>
the memory manager will return <var>Nil</var>. If set to <var>False</var>
then a run-time error will occur.
</descr>
</element>
<!-- function Visibility: default -->
<element name="SysGetmem">
<short>System memory manager memory allocator.</short>
<descr>
<var>SysGetmem</var> is the system memory manager implementation for <link id="GetMem"/>
</descr>
<seealso>
<link id="GetMem"/>
<link id="GetMemory"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysFreemem">
<short>System memory manager free routine.</short>
<descr>
<var>SysFreeem</var> is the system memory manager implementation for <link id="FreeMem"/>
</descr>
<seealso>
<link id="FreeMem"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysFreememSize">
<short>System memory manager free routine.</short>
<descr>
<var>SysFreemSize</var> is the system memory manager implementation for <link id="FreeMem"/>
</descr>
<seealso>
<link id="MemSize"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysMemSize">
<short>System memory manager: free size.</short>
<descr>
<var>SysFreemSize</var> is the system memory manager implementation for
<link id="MemSize"/>
</descr>
<seealso>
<link id="MemSize"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysAllocMem">
<short>System memory manager: Allocate memory</short>
<descr>
<var>SysFreemSize</var> is the system memory manager implementation for
<link id="AllocMem"/>
</descr>
<seealso>
<link id="AllocMem"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysTryResizeMem">
<short>System memory manager: attempt to resize memory.</short>
<descr>
<var>SysTryResizeMem</var> is a help routine for the system memory
manager implementation for <link id="ReAllocMem"/>, <link id="SysReAllocMem"/>
</descr>
<seealso>
<link id="SysReAllocMem"/>
<link id="ReAllocMem"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysReAllocMem">
<short>System memory manager: Reallocate memory</short>
<descr>
<var>SysReallocMem</var> is a help routine for the system memory
manager implementation for <link id="ReAllocMem"/>.
</descr>
<seealso>
<link id="ReAllocMem"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="Getmemory">
<short>Alias for <link id="GetMem"/>
</short>
<descr>
<var>Getmemory</var> is an alias for <link id="GetMem"/>.
</descr>
<seealso>
<link id="GetMem"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="Freememory">
<short>Alias for <link id="FreeMem"/>
</short>
<descr>
<var>FreeMemory</var> is an alias for <link id="FreeMem"/>.
</descr>
<seealso>
<link id="FreeMem"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="MemSize">
<short>Return the size of a memory block.</short>
<descr>
<var>MemSize</var> returns the size of a memory block on the heap.
</descr>
<errors>Passing an invalid pointer may lead to run-time errors (access violations).
</errors>
<seealso>
<link id="GetMem"/>
<link id="FreeMem"/>
</seealso>
</element>
<element name="AllocMem">
<short>Allocate and clear memory.</short>
<descr>
<var>AllocMem</var> calls getmem <link id="GetMem"/>, and clears the
allocated memory, i.e. the allocated memory is filled with <var>Size</var> zero bytes.
</descr>
<seealso>
<link id="GetMem"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="ReAllocMem">
<short>Re-allocate memory on the heap</short>
<descr>
<p>
<var>ReAllocMem</var> resizes the memory pointed to by <var>P</var> so it has size
<var>Size</var>. The value of <var>P</var> may change during this operation.
The contents of the memory pointed to by <var>P</var> (if any) will be copied to
the new location, but may be truncated if the newly allocated memory block
is smaller in size. If a larger block is allocated, only the used memory is
initialized, extra memory will not be zeroed out.
</p>
<p>Note that <var>P</var> may be nil, in that case the behaviour of
<var>ReAllocMem</var> is equivalent to <var>Getmem</var>.
</p>
</descr>
<seealso>
<link id="GetMem"/>
<link id="FreeMem"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="ReAllocMemory">
<short>Alias for <link id="ReAllocMem"/>
</short>
<descr>
<var>ReAllocMemory</var> is an alias for <link id="ReAllocMem"/>.
</descr>
<seealso>
<link id="ReAllocMem"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="AsmGetmem">
<short>Routine that can be called from assembler routines to get memory.</short>
<descr>
<var>AsmGetmem</var> is a routine that can be called from assembler code to
get memory. The assembler reader cannot decide which overloaded <link id="GetMem"/> call should be used. <var>AsmGetMem</var> provides a unique
name that can be called from assembler. Other than that it is completely
equivalent to <var>GetMem</var>.
</descr>
<seealso>
<link id="GetMem"/>
<link id="AsmFreeMem"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="AsmFreemem">
<short>Routine that can be called from assembler routines to release memory.</short>
<descr>
<var>AsmFreemem</var> is a routine that can be called from assembler code to
release previously alocated memory. The assembler reader cannot decide which
overloaded <link id="FreeMem"/> call should be used. <var>AsmFreeMem</var>
provides a unique name that can be called from assembler. Other than that it
is completely equivalent to <var>FreeMem</var>.
</descr>
<seealso>
<link id="FreeMem"/>
<link id="AsmGetMem"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="THandle">
<short>Type alias.</short>
<descr>This type should be considered opaque. It is used to describe file and other
handles.
</descr>
</element>
<!-- constant Visibility: default -->
<element name="LineEnding">
<short>Constant describing the current line ending character.</short>
<descr>
<p>
<var>LineEnding</var> is a constant which contains the current line-ending
character. This character is system dependent, and is initialized by the
system. It should not be set.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="DriveSeparator"/>
<link id="DirectorySeparator"/>
<link id="LFNSupport"/>
<link id="PathSeparator"/>
<link id="sLineBreak"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="LFNSupport">
<short>COnstant describing support for long filenames.</short>
<descr>
<p>
<var>LFNSupport</var> determines whether the current OS supports long file
names, i.e. filenames that are not of the form 8.3 as on ancient DOS
systems. If the value of this constant is <var>True</var> then long
filenames are supported. If it is false, then not.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<link id="DriveSeparator"/>
<link id="DirectorySeparator"/>
<link id="LineEnding"/>
<link id="PathSeparator"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</element>
<!-- constant Visibility: default -->
<element name="DirectorySeparator">
<short>Character used to separate directory parts.</short>
<descr>
<p>
<var>DirectorySeparator</var> is the character used by the current operating
system to separate directory parts in a pathname. This constant is system
dependent, and should not be set.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="DriveSeparator"/>
<link id="LineEnding"/>
<link id="LFNSupport"/>
<link id="PathSeparator"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="DriveSeparator">
<short>Character used to separate directory parts.</short>
<descr>
<p>On systems that support driveletters, the <var>DriveSeparator</var> constant
denotes the character that separates the drive indicator from the directory
part in a filename path.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="DirectorySeparator"/>
<link id="LineEnding"/>
<link id="LFNSupport"/>
<link id="PathSeparator"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="PathSeparator">
<short>Character used to separate paths in a search list</short>
<descr>
<p>
<var>PathSeparator</var> is the character used commonly on the current
operating system to separate paths in a list of paths, such as the
<var>PATH</var> environment variable.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="DirectorySeparator"/>
<link id="LineEnding"/>
<link id="LFNSupport"/>
<link id="DriveSeparator"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="FileNameCaseSensitive">
<short>OS treatment of filenames is case sensitive.</short>
<descr>
<p>
<var>FileNameCaseSensitive</var> is <var>True</var> if case is important
when using filenames on the current OS. In this case, the OS will treat
files with different cased names as different files. Note that this may
depend on the filesystem: Unix operating systems that access a DOS or
Windows partition will have this constant set to true, but when writing to
the DOS partition, the casing is ignored.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="DriveSeparator"/>
<link id="DirectorySeparator"/>
<link id="LineEnding"/>
<link id="LFNSupport"/>
<link id="PathSeparator"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="sLineBreak">
<short>Alias for <link id="LineEnding"/>
</short>
<descr>
<p>
<var>sLineBreak</var> is an alias for <link id="LineEnding"/> and is
supplied for Delphi compatibility.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="DriveSeparator"/>
<link id="DirectorySeparator"/>
<link id="LineEnding"/>
<link id="LFNSupport"/>
<link id="PathSeparator"/>
<link id="FileNameCaseSensitive"/>
<link id="DefaultTextLineBreakStyle"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="DefaultTextLineBreakStyle">
<short>Default line ending style.</short>
<descr>
<p>
<var>DefaultTextLineBreakStyle</var> contains the default OS setting for the
<link id="TTextLineBreakStyle"/> type. It is initizliaed by the system unit,
and is used to determine the default line ending when writing to text files.
</p>
<p>This constant is part of a set of constants that describe the OS
characteristics. These constants should be used instead of hardcoding
OS characteristics.
</p>
</descr>
<seealso>
<link id="SetTextLineEnding"/>
<link id="TTextLineBreakStyle"/>
<link id="DriveSeparator"/>
<link id="DirectorySeparator"/>
<link id="LineEnding"/>
<link id="LFNSupport"/>
<link id="PathSeparator"/>
<link id="FileNameCaseSensitive"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="maxExitCode">
<short>Maximum exit code supported by the operating system.</short>
<descr>
<var>maxExitCode</var> is the maximum value for the <link id="Halt"/> call.
</descr>
<seealso>
<link id="Halt"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="UnusedHandle">
<short>Value indicating an unused file handle (as reported by the OS).</short>
</element>
<!-- constant Visibility: default -->
<element name="StdInputHandle">
<short>Value of the OS handle for the standard input file.</short>
</element>
<!-- constant Visibility: default -->
<element name="StdOutputHandle">
<short>Value of the OS handle for the standard output file.</short>
</element>
<!-- constant Visibility: default -->
<element name="StdErrorHandle">
<short>Value of the OS handle for the standard error-output file.</short>
</element>
<!-- variable Visibility: default -->
<element name="argc" skip="1">
<short>Number of command-line arguments.</short>
<descr>
<var>argc</var> contains the number of command-line arguments passed to
the program by the OS. It is not available on all systems.
</descr>
<seealso>
<link id="argv"/>
<link id="envp"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="argv">
<short>Pointer to the array of command-line arguments</short>
<descr>
<var>argv</var> contains a pointer to a <var>nil</var>-terminated
array of null-terminated strings, containing the command-line
arguments passed to the program by the OS. It is not available
on all systems.
</descr>
<seealso>
<link id="argc"/>
<link id="envp"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="envp">
<short>Pointer to the array of environment variables</short>
<descr>
<var>envp</var> contains a pointer to a <var>nil</var>-terminated
array of null-terminated strings, containing the environment variables
passed to the program by the OS. It is not available on all systems.
</descr>
<seealso>
<link id="argc"/>
<link id="argv"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="SizeInt">
<short>Signed integer type which fits for sizes</short>
<seealso>
<link id="SizeUInt"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="SizeUInt">
<short>Unsigned Integer type which fits for sizes</short>
<seealso>
<link id="SizeInt"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="PtrInt">
<short>Signed integer type with same size as Pointer.</short>
<descr>
<p>
<var>Ptrint</var> is a signed integer type which has always the same size as a
pointer. Ptrint is considered harmfull and should almost never be used in actual
code, because pointers are normally unsigned. For example, consider the following
code:
</p>
<code>getmem(p,2048); {Assume the address of p becomes $7ffffff0.}
q:=pointer(ptrint(p)+1024)); {Overflow error.}
writeln(q&gt;p); {Incorrect answer.}
</code>
<p>Ptrint might have a valid use when two pointers are substracted from each other if
it is unknown which pointer has the largest address. However, even in this case
ptrint causes trouble in case the distance is larger than high(ptrint) and must be
used with great care.
</p>
<p>The introduction of the <var>ptrint</var> type was a mistake. Please use
<link id="ptruint"/> instead.
</p>
</descr>
<seealso>
<link id="ptruInt"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="PtrUInt">
<short>Unsigned integer type with same size as Pointer.</short>
<descr>
<var>PtrUInt</var> is an unsigned integer type which has always the same size as a
pointer. When using integers which will be cast to pointers and vice versa,
use this type, never the regular Cardinal type.
</descr>
</element>
<!-- alias type Visibility: default -->
<element name="ValSInt">
<short>Val-Signed integer.</short>
<descr>Integer with the same size as the return code of the <link id="Val"/>
function.
</descr>
<seealso>
<link id="Val"/>
<link id="ValUInt"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="ValUInt">
<short>Val-unsigned integer</short>
<descr>Integer with the same size as the return code of the <link id="Val"/>
function.
</descr>
<seealso>
<link id="Val"/>
<link id="ValUInt"/>
</seealso>
</element>
<!-- pointer type Visibility: default -->
<element name="PVariant">
<short>Pointer to <var>Variant</var> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="POleVariant">
<short>Pointer to <var>OleVariant</var> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PWideChar">
<short>Pointer to <link id="WChar"/>.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPWideChar">
<short>Pointer to link id="PWideChar"&gt; type.</short>
</element>
<!-- alias type Visibility: default -->
<element name="UCS2Char">
<short>UCS2 unicode character.</short>
</element>
<!-- alias type Visibility: default -->
<element name="PUCS2Char">
<short>Pointer to <link id="UCS2Char"/> character.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PText">
<short>Pointer to text file.</short>
</element>
<!-- variable Visibility: default -->
<element name="ErrOutput">
<short>Alias for <link id="StdErr"/>
</short>
<descr>
<var>ErrOutput</var> is provided for Delphi compatibility.
</descr>
<seealso>
<link id="StdErr"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_lo_word">
<short>FPC compiler internal procedure index: lo (word)</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_hi_word">
<short>FPC compiler internal procedure index: hi (word)</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_lo_long">
<short>FPC compiler internal procedure index: lo (long)</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_hi_long">
<short>FPC compiler internal procedure index: hi (long)</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_ord_x">
<short>FPC compiler internal procedure index: ord </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_length_string">
<short>FPC compiler internal procedure index: length</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_chr_byte">
<short>FPC compiler internal procedure index: chr</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_write_x">
<short>FPC compiler internal procedure index: write</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_writeln_x">
<short>FPC compiler internal procedure index: writeln</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_read_x">
<short>FPC compiler internal procedure index: read</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_readln_x">
<short>FPC compiler internal procedure index: readln</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_concat_x">
<short>FPC compiler internal procedure index: concat </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_assigned_x">
<short>FPC compiler internal procedure index: assigned </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_str_x_string">
<short>FPC compiler internal procedure index: str </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_ofs_x">
<short>FPC compiler internal procedure index: ofs </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_sizeof_x">
<short>FPC compiler internal procedure index: sizeof </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_typeof_x">
<short>FPC compiler internal procedure index: typeof </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_val_x">
<short>FPC compiler internal procedure index: val </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_reset_x">
<short>FPC compiler internal procedure index: reset </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_rewrite_x">
<short>FPC compiler internal procedure index: rewrite </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_low_x">
<short>FPC compiler internal procedure index: low </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_high_x">
<short>FPC compiler internal procedure index: high </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_seg_x">
<short>FPC compiler internal procedure index: seg </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_pred_x">
<short>FPC compiler internal procedure index: pred </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_succ_x">
<short>FPC compiler internal procedure index: succ </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_reset_typedfile">
<short>FPC compiler internal procedure index: reset </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_rewrite_typedfile">
<short>FPC compiler internal procedure index: rewrite </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_settextbuf_file_x">
<short>FPC compiler internal procedure index: settextbuf </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_inc_x">
<short>FPC compiler internal procedure index: inc </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_dec_x">
<short>FPC compiler internal procedure index: dec </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_include_x_y">
<short>FPC compiler internal procedure index: include </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_exclude_x_y">
<short>FPC compiler internal procedure index: exclude </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_break">
<short>FPC compiler internal procedure index: break </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_continue">
<short>FPC compiler internal procedure index: continue </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_assert_x_y">
<short>FPC compiler internal procedure index: assert </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_addr_x">
<short>FPC compiler internal procedure index: addr </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_typeinfo_x">
<short>FPC compiler internal procedure index: typeinfo </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_setlength_x">
<short>FPC compiler internal procedure index: setlength </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_finalize_x">
<short>FPC compiler internal procedure index: finalize </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_new_x">
<short>FPC compiler internal procedure index: new </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_dispose_x">
<short>FPC compiler internal procedure index: dispose </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_exit">
<short>FPC compiler internal procedure index: exit </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_copy_x">
<short>FPC compiler internal procedure index: copy </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_initialize_x">
<short>FPC compiler internal procedure index: initialize </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_leave">
<short>FPC compiler internal procedure index: leave </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_cycle">
<short>FPC compiler internal procedure index: cycle </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_trunc">
<short>FPC compiler internal procedure index: trunc </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_round">
<short>FPC compiler internal procedure index: round </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_frac">
<short>FPC compiler internal procedure index: frac </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_abs">
<short>FPC compiler internal procedure index: abs </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_int">
<short>FPC compiler internal procedure index: int </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_sqr">
<short>FPC compiler internal procedure index: sqr </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_odd">
<short>FPC compiler internal procedure index: sqr </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_ptr">
<short>FPC compiler internal procedure index: sqr </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_swap_word">
<short>FPC compiler internal procedure index: swap (word) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_swap_long">
<short>FPC compiler internal procedure index: swap (long) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_pi">
<short>FPC compiler internal procedure index: pi </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_sqrt">
<short>FPC compiler internal procedure index: sqrt </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_arctan">
<short>FPC compiler internal procedure index: arctan </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_cos">
<short>FPC compiler internal procedure index: cos </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_exp">
<short>FPC compiler internal procedure index: exp </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_ln">
<short>FPC compiler internal procedure index: in </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_sin">
<short>FPC compiler internal procedure index: sin </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_lo_qword">
<short>FPC compiler internal procedure index: lo (qword) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_hi_qword">
<short>FPC compiler internal procedure index: hi (qword) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_cos_real">
<short>FPC compiler internal procedure index: cos (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_pi">
<short>FPC compiler internal procedure index: pi </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_abs_real">
<short>FPC compiler internal procedure index: abs (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_sqr_real">
<short>FPC compiler internal procedure index: sqr (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_sqrt_real">
<short>FPC compiler internal procedure index: sqrt (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_arctan_real">
<short>FPC compiler internal procedure index: arctan (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_ln_real">
<short>FPC compiler internal procedure index: ln (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_sin_real">
<short>FPC compiler internal procedure index: sin (real) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_const_swap_qword">
<short>FPC compiler internal procedure index: swap (qword) </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_prefetch_var">
<short>FPC compiler internal procedure index: prefetch </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_mmx_pcmpeqb">
<short>FPC compiler internal procedure index: MMX </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_mmx_pcmpeqw">
<short>FPC compiler internal procedure index: MMX </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_mmx_pcmpeqd">
<short>FPC compiler internal procedure index: MMX </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_mmx_pcmpgtb">
<short>FPC compiler internal procedure index: MMX </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_mmx_pcmpgtw">
<short>FPC compiler internal procedure index: MMX </short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_mmx_pcmpgtd">
<short>FPC compiler internal procedure index: MMX </short>
</element>
<element name="fpc_abs_real">
<short>FPC internal compiler routine: abs_real</short>
</element>
<element name="fpc_AbstractErrorIntern">
<short>FPC internal compiler routine: AbstractErrorIntern</short>
</element>
<element name="fpc_Addref">
<short>FPC internal compiler routine: Addref</short>
</element>
<element name="fpc_ansistr_append_ansistring">
<short>FPC internal compiler routine: ansistr_append_ansistring</short>
</element>
<element name="fpc_ansistr_append_char">
<short>FPC internal compiler routine: ansistr_append_char</short>
</element>
<element name="fpc_ansistr_append_shortstring">
<short>FPC internal compiler routine: ansistr_append_shortstring</short>
</element>
<element name="fpc_AnsiStr_Assign">
<short>FPC internal compiler routine: AnsiStr_Assign</short>
</element>
<element name="fpc_AnsiStr_CheckRange">
<short>FPC internal compiler routine: AnsiStr_CheckRange</short>
</element>
<element name="fpc_AnsiStr_CheckZero">
<short>FPC internal compiler routine: AnsiStr_CheckZero</short>
</element>
<element name="fpc_AnsiStr_Compare">
<short>FPC internal compiler routine: AnsiStr_Compare</short>
</element>
<element name="fpc_AnsiStr_Concat">
<short>FPC internal compiler routine: AnsiStr_Concat</short>
</element>
<element name="fpc_AnsiStr_Concat_multi">
<short>FPC internal compiler routine: AnsiStr_Concat_multi</short>
</element>
<element name="fpc_ansistr_Copy">
<short>FPC internal compiler routine: ansistr_Copy</short>
</element>
<element name="fpc_ansistr_decr_ref">
<short>FPC internal compiler routine: ansistr_decr_ref</short>
</element>
<element name="fpc_AnsiStr_Float">
<short>FPC internal compiler routine: AnsiStr_Float</short>
</element>
<element name="fpc_ansistr_incr_ref">
<short>FPC internal compiler routine: ansistr_incr_ref</short>
</element>
<element name="fpc_ansistr_int64">
<short>FPC internal compiler routine: ansistr_int64</short>
</element>
<element name="fpc_ansistr_qword">
<short>FPC internal compiler routine: ansistr_qword</short>
</element>
<element name="fpc_AnsiStr_SetLength">
<short>FPC internal compiler routine: AnsiStr_SetLength</short>
</element>
<element name="fpc_AnsiStr_sint">
<short>FPC internal compiler routine: AnsiStr_sint</short>
</element>
<element name="fpc_ansistr_to_chararray">
<short>FPC internal compiler routine: ansistr_to_chararray</short>
</element>
<element name="fpc_AnsiStr_To_ShortStr">
<short>FPC internal compiler routine: AnsiStr_To_ShortStr</short>
</element>
<element name="fpc_ansistr_to_widechararray">
<short>FPC internal compiler routine: ansistr_to_widechararray</short>
</element>
<element name="fpc_AnsiStr_To_WideStr">
<short>FPC internal compiler routine: AnsiStr_To_WideStr</short>
</element>
<element name="fpc_AnsiStr_uint">
<short>FPC internal compiler routine: AnsiStr_uint</short>
</element>
<element name="fpc_ansistr_Unique">
<short>FPC internal compiler routine: ansistr_Unique</short>
</element>
<element name="fpc_arctan_real">
<short>FPC internal compiler routine: arctan_real</short>
</element>
<element name="fpc_assert">
<short>FPC internal compiler routine: assert</short>
</element>
<element name="fpc_Catches">
<short>FPC internal compiler routine: Catches</short>
</element>
<element name="fpc_chararray_Float">
<short>FPC internal compiler routine: chararray_Float</short>
</element>
<element name="fpc_chararray_int64">
<short>FPC internal compiler routine: chararray_int64</short>
</element>
<element name="fpc_chararray_qword">
<short>FPC internal compiler routine: chararray_qword</short>
</element>
<element name="fpc_chararray_sint">
<short>FPC internal compiler routine: chararray_sint</short>
</element>
<element name="fpc_CharArray_To_AnsiStr">
<short>FPC internal compiler routine: CharArray_To_AnsiStr</short>
</element>
<element name="fpc_chararray_to_shortstr">
<short>FPC internal compiler routine: chararray_to_shortstr</short>
</element>
<element name="fpc_CharArray_To_WideStr">
<short>FPC internal compiler routine: CharArray_To_WideStr</short>
</element>
<element name="fpc_chararray_uint">
<short>FPC internal compiler routine: chararray_uint</short>
</element>
<element name="fpc_char_copy">
<short>FPC internal compiler routine: char_copy</short>
</element>
<element name="fpc_Char_To_AnsiStr">
<short>FPC internal compiler routine: Char_To_AnsiStr</short>
</element>
<element name="fpc_Char_To_WideStr">
<short>FPC internal compiler routine: Char_To_WideStr</short>
</element>
<element name="fpc_class_as_intf">
<short>FPC internal compiler routine: class_as_intf</short>
</element>
<element name="fpc_cos_real">
<short>FPC internal compiler routine: cos_real</short>
</element>
<element name="fpc_DecRef">
<short>FPC internal compiler routine: DecRef</short>
</element>
<element name="fpc_divbyzero">
<short>FPC internal compiler routine: divbyzero</short>
</element>
<element name="fpc_div_int64">
<short>FPC internal compiler routine: div_int64</short>
</element>
<element name="fpc_div_qword">
<short>FPC internal compiler routine: div_qword</short>
</element>
<element name="fpc_do_as">
<short>FPC internal compiler routine: do_as</short>
</element>
<element name="fpc_do_is">
<short>FPC internal compiler routine: do_is</short>
</element>
<element name="fpc_dynarray_clear">
<short>FPC internal compiler routine: dynarray_clear</short>
</element>
<element name="fpc_dynarray_copy">
<short>FPC internal compiler routine: dynarray_copy</short>
</element>
<element name="fpc_dynarray_decr_ref">
<short>FPC internal compiler routine: dynarray_decr_ref</short>
</element>
<element name="fpc_dynarray_high">
<short>FPC internal compiler routine: dynarray_high</short>
</element>
<element name="fpc_dynarray_incr_ref">
<short>FPC internal compiler routine: dynarray_incr_ref</short>
</element>
<element name="fpc_dynarray_length">
<short>FPC internal compiler routine: dynarray_length</short>
</element>
<element name="fpc_dynarray_setlength">
<short>FPC internal compiler routine: dynarray_setlength</short>
</element>
<element name="fpc_dynarray_to_variant">
<short>FPC internal compiler routine: dynarray_to_variant</short>
</element>
<element name="fpc_exp_real">
<short>FPC internal compiler routine: exp_real</short>
</element>
<element name="fpc_finalize">
<short>FPC internal compiler routine: finalize</short>
</element>
<element name="fpc_finalize_array">
<short>FPC internal compiler routine: finalize_array</short>
</element>
<element name="fpc_frac_real">
<short>FPC internal compiler routine: frac_real</short>
</element>
<element name="fpc_freemem">
<short>FPC internal compiler routine: freemem</short>
</element>
<element name="fpc_get_input">
<short>FPC internal compiler routine: get_input</short>
</element>
<element name="fpc_getmem">
<short>FPC internal compiler routine: getmem</short>
</element>
<element name="fpc_get_output">
<short>FPC internal compiler routine: get_output</short>
</element>
<element name="fpc_help_constructor">
<short>FPC internal compiler routine: help_constructor</short>
</element>
<element name="fpc_help_destructor">
<short>FPC internal compiler routine: help_destructor</short>
</element>
<element name="fpc_help_fail">
<short>FPC internal compiler routine: help_fail</short>
</element>
<element name="fpc_in_exp_real">
<short>FPC internal compiler routine: in_exp_real</short>
</element>
<element name="fpc_in_fillchar_x">
<short>FPC internal compiler routine: in_fillchar_x</short>
</element>
<element name="fpc_in_frac_real">
<short>FPC internal compiler routine: in_frac_real</short>
</element>
<element name="fpc_in_get_caller_addr">
<short>FPC internal compiler routine: in_get_caller_addr</short>
</element>
<element name="fpc_in_get_caller_frame">
<short>FPC internal compiler routine: in_get_caller_frame</short>
</element>
<element name="fpc_in_get_frame">
<short>FPC internal compiler routine: in_get_frame</short>
</element>
<element name="fpc_in_int_real">
<short>FPC internal compiler routine: in_int_real</short>
</element>
<element name="fpc_Initialize">
<short>FPC internal compiler routine: Initialize</short>
</element>
<element name="fpc_InitializeUnits">
<short>FPC internal compiler routine: InitializeUnits</short>
</element>
<element name="fpc_in_move_x">
<short>FPC internal compiler routine: in_move_x</short>
</element>
<element name="fpc_in_pi_real">
<short>FPC internal compiler routine: in_pi_real</short>
</element>
<element name="fpc_in_round_real">
<short>FPC internal compiler routine: in_round_real</short>
</element>
<element name="fpc_in_slice">
<short>FPC internal compiler routine: in_slice</short>
</element>
<element name="fpc_interface_to_variant">
<short>FPC internal compiler routine: interface_to_variant</short>
</element>
<element name="fpc_intf_as">
<short>FPC internal compiler routine: intf_as</short>
</element>
<element name="fpc_intf_assign">
<short>FPC internal compiler routine: intf_assign</short>
</element>
<element name="fpc_intf_decr_ref">
<short>FPC internal compiler routine: intf_decr_ref</short>
</element>
<element name="fpc_intf_incr_ref">
<short>FPC internal compiler routine: intf_incr_ref</short>
</element>
<element name="fpc_int_real">
<short>FPC internal compiler routine: int_real</short>
</element>
<element name="fpc_in_trunc_real">
<short>FPC internal compiler routine: in_trunc_real</short>
</element>
<element name="fpc_iocheck">
<short>FPC internal compiler routine: iocheck</short>
</element>
<element name="fpc_ln_real">
<short>FPC internal compiler routine: ln_real</short>
</element>
<element name="fpc_mod_int64">
<short>FPC internal compiler routine: mod_int64</short>
</element>
<element name="fpc_mod_qword">
<short>FPC internal compiler routine: mod_qword</short>
</element>
<element name="fpc_mul_int64">
<short>FPC internal compiler routine: mul_int64</short>
</element>
<element name="fpc_mul_qword">
<short>FPC internal compiler routine: mul_qword</short>
</element>
<element name="fpc_overflow">
<short>FPC internal compiler routine: overflow</short>
</element>
<element name="fpc_pchar_length">
<short>FPC internal compiler routine: pchar_length</short>
</element>
<element name="fpc_PChar_To_AnsiStr">
<short>FPC internal compiler routine: PChar_To_AnsiStr</short>
</element>
<element name="fpc_pchar_to_shortstr">
<short>FPC internal compiler routine: pchar_to_shortstr</short>
</element>
<element name="fpc_PChar_To_WideStr">
<short>FPC internal compiler routine: PChar_To_WideStr</short>
</element>
<element name="fpc_pi_real">
<short>FPC internal compiler routine: pi_real</short>
</element>
<element name="fpc_PopAddrStack">
<short>FPC internal compiler routine: PopAddrStack</short>
</element>
<element name="fpc_PopObjectStack">
<short>FPC internal compiler routine: PopObjectStack</short>
</element>
<element name="fpc_PopSecondObjectStack">
<short>FPC internal compiler routine: PopSecondObjectStack</short>
</element>
<element name="fpc_PushExceptAddr">
<short>FPC internal compiler routine: PushExceptAddr</short>
</element>
<element name="fpc_PushExceptObj">
<short>FPC internal compiler routine: PushExceptObj</short>
</element>
<element name="fpc_pwidechar_length">
<short>FPC internal compiler routine: pwidechar_length</short>
</element>
<element name="fpc_PWideChar_To_AnsiStr">
<short>FPC internal compiler routine: PWideChar_To_AnsiStr</short>
</element>
<element name="fpc_PWideChar_To_ShortStr">
<short>FPC internal compiler routine: PWideChar_To_ShortStr</short>
</element>
<element name="fpc_PWideChar_To_WideStr">
<short>FPC internal compiler routine: PWideChar_To_WideStr</short>
</element>
<element name="fpc_Raiseexception">
<short>FPC internal compiler routine: Raiseexception</short>
</element>
<element name="fpc_rangeerror">
<short>FPC internal compiler routine: rangeerror</short>
</element>
<element name="fpc_Read_End">
<short>FPC internal compiler routine: Read_End</short>
</element>
<element name="fpc_ReadLn_End">
<short>FPC internal compiler routine: ReadLn_End</short>
</element>
<element name="fpc_Read_Text_AnsiStr">
<short>FPC internal compiler routine: Read_Text_AnsiStr</short>
</element>
<element name="fpc_Read_Text_Char">
<short>FPC internal compiler routine: Read_Text_Char</short>
</element>
<element name="fpc_Read_Text_Float">
<short>FPC internal compiler routine: Read_Text_Float</short>
</element>
<element name="fpc_Read_Text_Int64">
<short>FPC internal compiler routine: Read_Text_Int64</short>
</element>
<element name="fpc_Read_Text_PChar_As_Array">
<short>FPC internal compiler routine: Read_Text_PChar_As_Array</short>
</element>
<element name="fpc_Read_Text_PChar_As_Pointer">
<short>FPC internal compiler routine: Read_Text_PChar_As_Pointer</short>
</element>
<element name="fpc_Read_Text_QWord">
<short>FPC internal compiler routine: Read_Text_QWord</short>
</element>
<element name="fpc_Read_Text_ShortStr">
<short>FPC internal compiler routine: Read_Text_ShortStr</short>
</element>
<element name="fpc_Read_Text_SInt">
<short>FPC internal compiler routine: Read_Text_SInt</short>
</element>
<element name="fpc_Read_Text_UInt">
<short>FPC internal compiler routine: Read_Text_UInt</short>
</element>
<element name="fpc_ReRaise">
<short>FPC internal compiler routine: ReRaise</short>
</element>
<element name="fpc_reset_typed">
<short>FPC internal compiler routine: reset_typed</short>
</element>
<element name="fpc_rewrite_typed">
<short>FPC internal compiler routine: rewrite_typed</short>
</element>
<element name="fpc_round_real">
<short>FPC internal compiler routine: round_real</short>
</element>
<element name="fpc_set_add_sets">
<short>FPC internal compiler routine: set_add_sets</short>
</element>
<element name="fpc_set_comp_sets">
<short>FPC internal compiler routine: set_comp_sets</short>
</element>
<element name="fpc_set_contains_sets">
<short>FPC internal compiler routine: set_contains_sets</short>
</element>
<element name="fpc_set_create_element">
<short>FPC internal compiler routine: set_create_element</short>
</element>
<element name="fpc_set_in_byte">
<short>FPC internal compiler routine: set_in_byte</short>
</element>
<element name="fpc_set_load_small">
<short>FPC internal compiler routine: set_load_small</short>
</element>
<element name="fpc_set_mul_sets">
<short>FPC internal compiler routine: set_mul_sets</short>
</element>
<element name="fpc_set_set_byte">
<short>FPC internal compiler routine: set_set_byte</short>
</element>
<element name="fpc_set_set_range">
<short>FPC internal compiler routine: set_set_range</short>
</element>
<element name="fpc_set_sub_sets">
<short>FPC internal compiler routine: set_sub_sets</short>
</element>
<element name="fpc_set_symdif_sets">
<short>FPC internal compiler routine: set_symdif_sets</short>
</element>
<element name="fpc_set_unset_byte">
<short>FPC internal compiler routine: set_unset_byte</short>
</element>
<element name="fpc_shortstr_append_shortstr">
<short>FPC internal compiler routine: shortstr_append_shortstr</short>
</element>
<element name="fpc_shortstr_compare">
<short>FPC internal compiler routine: shortstr_compare</short>
</element>
<element name="fpc_shortstr_concat">
<short>FPC internal compiler routine: shortstr_concat</short>
</element>
<element name="fpc_shortstr_Copy">
<short>FPC internal compiler routine: shortstr_Copy</short>
</element>
<element name="fpc_ShortStr_Float">
<short>FPC internal compiler routine: ShortStr_Float</short>
</element>
<element name="fpc_shortstr_int64">
<short>FPC internal compiler routine: shortstr_int64</short>
</element>
<element name="fpc_shortstr_qword">
<short>FPC internal compiler routine: shortstr_qword</short>
</element>
<element name="fpc_Shortstr_SetLength">
<short>FPC internal compiler routine: Shortstr_SetLength</short>
</element>
<element name="fpc_ShortStr_sint">
<short>FPC internal compiler routine: ShortStr_sint</short>
</element>
<element name="fpc_ShortStr_To_AnsiStr">
<short>FPC internal compiler routine: ShortStr_To_AnsiStr</short>
</element>
<element name="fpc_shortstr_to_chararray">
<short>FPC internal compiler routine: shortstr_to_chararray</short>
</element>
<element name="fpc_shortstr_to_shortstr">
<short>FPC internal compiler routine: shortstr_to_shortstr</short>
</element>
<element name="fpc_shortstr_to_widechararray">
<short>FPC internal compiler routine: shortstr_to_widechararray</short>
</element>
<element name="fpc_ShortStr_To_WideStr">
<short>FPC internal compiler routine: ShortStr_To_WideStr</short>
</element>
<element name="fpc_shortstr_uint">
<short>FPC internal compiler routine: shortstr_uint</short>
</element>
<element name="fpc_sin_real">
<short>FPC internal compiler routine: sin_real</short>
</element>
<element name="fpc_sqr_real">
<short>FPC internal compiler routine: sqr_real</short>
</element>
<element name="fpc_sqrt_real">
<short>FPC internal compiler routine: sqrt_real</short>
</element>
<element name="fpc_trunc_real">
<short>FPC internal compiler routine: trunc_real</short>
</element>
<element name="fpc_typed_read">
<short>FPC internal compiler routine: typed_read</short>
</element>
<element name="fpc_typed_write">
<short>FPC internal compiler routine: typed_write</short>
</element>
<element name="fpc_Val_int64_AnsiStr">
<short>FPC internal compiler routine: Val_int64_AnsiStr</short>
</element>
<element name="fpc_val_int64_shortstr">
<short>FPC internal compiler routine: val_int64_shortstr</short>
</element>
<element name="fpc_Val_int64_WideStr">
<short>FPC internal compiler routine: Val_int64_WideStr</short>
</element>
<element name="fpc_Val_qword_AnsiStr">
<short>FPC internal compiler routine: Val_qword_AnsiStr</short>
</element>
<element name="fpc_val_qword_shortstr">
<short>FPC internal compiler routine: val_qword_shortstr</short>
</element>
<element name="fpc_Val_qword_WideStr">
<short>FPC internal compiler routine: Val_qword_WideStr</short>
</element>
<element name="fpc_Val_Real_AnsiStr">
<short>FPC internal compiler routine: Val_Real_AnsiStr</short>
</element>
<element name="fpc_Val_Real_ShortStr">
<short>FPC internal compiler routine: Val_Real_ShortStr</short>
</element>
<element name="fpc_Val_Real_WideStr">
<short>FPC internal compiler routine: Val_Real_WideStr</short>
</element>
<element name="fpc_Val_SInt_AnsiStr">
<short>FPC internal compiler routine: Val_SInt_AnsiStr</short>
</element>
<element name="fpc_Val_SInt_ShortStr">
<short>FPC internal compiler routine: Val_SInt_ShortStr</short>
</element>
<element name="fpc_Val_SInt_WideStr">
<short>FPC internal compiler routine: Val_SInt_WideStr</short>
</element>
<element name="fpc_Val_UInt_AnsiStr">
<short>FPC internal compiler routine: Val_UInt_AnsiStr</short>
</element>
<element name="fpc_Val_UInt_Shortstr">
<short>FPC internal compiler routine: Val_UInt_Shortstr</short>
</element>
<element name="fpc_Val_UInt_WideStr">
<short>FPC internal compiler routine: Val_UInt_WideStr</short>
</element>
<element name="fpc_vararray_get">
<short>FPC internal compiler routine: vararray_get</short>
</element>
<element name="fpc_vararray_put">
<short>FPC internal compiler routine: vararray_put</short>
</element>
<element name="fpc_variant_copy">
<short>FPC internal compiler routine: variant_copy</short>
</element>
<element name="fpc_variant_to_dynarray">
<short>FPC internal compiler routine: variant_to_dynarray</short>
</element>
<element name="fpc_variant_to_interface">
<short>FPC internal compiler routine: variant_to_interface</short>
</element>
<element name="fpc_WideCharArray_To_AnsiStr">
<short>FPC internal compiler routine: WideCharArray_To_AnsiStr</short>
</element>
<element name="fpc_WideCharArray_To_ShortStr">
<short>FPC internal compiler routine: WideCharArray_To_ShortStr</short>
</element>
<element name="fpc_WideCharArray_To_WideStr">
<short>FPC internal compiler routine: WideCharArray_To_WideStr</short>
</element>
<element name="fpc_WideStr_Assign">
<short>FPC internal compiler routine: WideStr_Assign</short>
</element>
<element name="fpc_WideStr_CheckRange">
<short>FPC internal compiler routine: WideStr_CheckRange</short>
</element>
<element name="fpc_WideStr_CheckZero">
<short>FPC internal compiler routine: WideStr_CheckZero</short>
</element>
<element name="fpc_WideStr_Compare">
<short>FPC internal compiler routine: WideStr_Compare</short>
</element>
<element name="fpc_WideStr_Concat">
<short>FPC internal compiler routine: WideStr_Concat</short>
</element>
<element name="fpc_WideStr_Concat_multi">
<short>FPC internal compiler routine: WideStr_Concat_multi</short>
</element>
<element name="fpc_widestr_Copy">
<short>FPC internal compiler routine: widestr_Copy</short>
</element>
<element name="fpc_WideStr_Decr_Ref">
<short>FPC internal compiler routine: WideStr_Decr_Ref</short>
</element>
<element name="fpc_WideStr_Float">
<short>FPC internal compiler routine: WideStr_Float</short>
</element>
<element name="fpc_WideStr_Incr_Ref">
<short>FPC internal compiler routine: WideStr_Incr_Ref</short>
</element>
<element name="fpc_widestr_int64">
<short>FPC internal compiler routine: widestr_int64</short>
</element>
<element name="fpc_widestr_qword">
<short>FPC internal compiler routine: widestr_qword</short>
</element>
<element name="fpc_WideStr_SetLength">
<short>FPC internal compiler routine: WideStr_SetLength</short>
</element>
<element name="fpc_WideStr_sint">
<short>FPC internal compiler routine: WideStr_sint</short>
</element>
<element name="fpc_WideStr_To_AnsiStr">
<short>FPC internal compiler routine: WideStr_To_AnsiStr</short>
</element>
<element name="fpc_widestr_to_chararray">
<short>FPC internal compiler routine: widestr_to_chararray</short>
</element>
<element name="fpc_WideStr_To_ShortStr">
<short>FPC internal compiler routine: WideStr_To_ShortStr</short>
</element>
<element name="fpc_widestr_to_widechararray">
<short>FPC internal compiler routine: widestr_to_widechararray</short>
</element>
<element name="fpc_WideStr_uint">
<short>FPC internal compiler routine: WideStr_uint</short>
</element>
<element name="fpc_widestr_Unique">
<short>FPC internal compiler routine: widestr_Unique</short>
</element>
<element name="fpc_Write_End">
<short>FPC internal compiler routine: Write_End</short>
</element>
<element name="fpc_Writeln_End">
<short>FPC internal compiler routine: Writeln_End</short>
</element>
<element name="fpc_Write_Text_AnsiStr">
<short>FPC internal compiler routine: Write_Text_AnsiStr</short>
</element>
<element name="fpc_Write_Text_Boolean">
<short>FPC internal compiler routine: Write_Text_Boolean</short>
</element>
<element name="fpc_Write_Text_Char">
<short>FPC internal compiler routine: Write_Text_Char</short>
</element>
<element name="fpc_Write_Text_Float">
<short>FPC internal compiler routine: Write_Text_Float</short>
</element>
<element name="fpc_write_text_int64">
<short>FPC internal compiler routine: write_text_int64</short>
</element>
<element name="fpc_Write_Text_Pchar_as_Array">
<short>FPC internal compiler routine: Write_Text_Pchar_as_Array</short>
</element>
<element name="fpc_Write_Text_PChar_As_Pointer">
<short>FPC internal compiler routine: Write_Text_PChar_As_Pointer</short>
</element>
<element name="fpc_write_text_qword">
<short>FPC internal compiler routine: write_text_qword</short>
</element>
<element name="fpc_Write_Text_ShortStr">
<short>FPC internal compiler routine: Write_Text_ShortStr</short>
</element>
<element name="fpc_Write_Text_SInt">
<short>FPC internal compiler routine: Write_Text_SInt</short>
</element>
<element name="fpc_Write_Text_UInt">
<short>FPC internal compiler routine: Write_Text_UInt</short>
</element>
<element name="fpc_write_text_variant">
<short>FPC internal compiler routine: write_text_variant</short>
</element>
<element name="fpc_Write_Text_WideChar">
<short>FPC internal compiler routine: Write_Text_WideChar</short>
</element>
<element name="fpc_Write_Text_WideStr">
<short>FPC internal compiler routine: Write_Text_WideStr</short>
</element>
<!-- function Visibility: default -->
<element name="Align">
<short>Return aligned version of an address</short>
<descr>
<var>Align</var> returns <var>Address</var>, aligned to <var>Alignment</var>
bytes.
</descr>
<errors>None.
</errors>
</element>
<element name="ArrayStringToPPchar">
<short>Concert an array of string to an array of null-terminated strings</short>
<descr>
<p>
<var>ArrayStringToPPchar</var> creates an array of null-terminated strings
that point to strings which are the same as the strings in the array
<var>S</var>. The function returns a pointer to this array. The array and
the strings it contains must be disposed of after being used, because it
they are allocated on the heap.
</p>
<p>The <var>ReserveEntries</var> parameter tells <var>ArrayStringToPPchar</var>
to allocate room at the end of the array for another <var>ReserveEntries</var>
entries.
</p>
</descr>
<errors>If not enough memory is available, an error may occur.
</errors>
<seealso>
<link id="StringToPPChar"/>
</seealso>
</element>
<element name="StringToPPChar">
<short>Split string in list of null-terminated strings</short>
<descr>
<p>
<var>StringToPPChar</var> splits the string <var>S</var> in words, replacing any
whitespace with zero characters. It returns a pointer to an array of pchars
that point to the first letters of the words in <var>S</var>. This array is terminated
by a <var>Nil</var> pointer.
</p>
<p>The function does <em>not</em> add a zero character to the end of the string
unless it ends on whitespace.
</p>
<p>The function reserves memory on the heap to store the array of <var>PChar</var>;
The caller is responsible for freeing this memory.
</p>
<p>This function is only available on certain platforms.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="ArrayStringToPPchar"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="varempty">
<short>Variant type: <var>Empty</var> variant</short>
</element>
<!-- constant Visibility: default -->
<element name="varnull">
<short>Variant type: <link id="Null"/> variant </short>
</element>
<!-- constant Visibility: default -->
<element name="varsmallint">
<short>Variant type: smallint (8 bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varinteger">
<short>Variant type: Integer (32-bit)</short>
</element>
<!-- constant Visibility: default -->
<element name="varsingle">
<short>Variant type: Single float </short>
</element>
<!-- constant Visibility: default -->
<element name="vardouble">
<short>Variant type: Double float </short>
</element>
<!-- constant Visibility: default -->
<element name="varcurrency">
<short>Variant type: Currency </short>
</element>
<!-- constant Visibility: default -->
<element name="vardate">
<short>Variant type: Date </short>
</element>
<!-- constant Visibility: default -->
<element name="varolestr">
<short>Variant type: OLE string (widestring) </short>
</element>
<!-- constant Visibility: default -->
<element name="vardispatch">
<short>Variant type: dispatch interface </short>
</element>
<!-- constant Visibility: default -->
<element name="varerror">
<short>Variant type: Error type </short>
</element>
<!-- constant Visibility: default -->
<element name="varboolean">
<short>Variant type: Boolean type </short>
</element>
<!-- constant Visibility: default -->
<element name="varvariant">
<short>Variant type: Variant (arrays only) </short>
</element>
<!-- constant Visibility: default -->
<element name="varunknown">
<short>Variant type: Unknown </short>
</element>
<!-- constant Visibility: default -->
<element name="vardecimal">
<short>Variant type: Decimal (BCD) </short>
</element>
<!-- constant Visibility: default -->
<element name="varshortint">
<short>Variant type: Shortint (16 bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varbyte">
<short>Variant type: Byte (8 bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varword">
<short>Variant type: Word (16 bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varlongword">
<short>Variant type: Word (32 bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varint64">
<short>Variant type: Integer (64-Bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varqword">
<short>Variant type: Word (64-bit) </short>
</element>
<!-- constant Visibility: default -->
<element name="varstrarg">
<short>Variant type: String </short>
</element>
<!-- constant Visibility: default -->
<element name="varstring">
<short>Variant type: String </short>
</element>
<!-- constant Visibility: default -->
<element name="varany">
<short>Variant type: Any </short>
</element>
<!-- constant Visibility: default -->
<element name="vartypemask">
<short>Variant type: Mask to extract type </short>
</element>
<!-- constant Visibility: default -->
<element name="vararray">
<short>Variant type: variant Array </short>
</element>
<!-- constant Visibility: default -->
<element name="varbyref">
<short>Variant type: By reference </short>
</element>
<!-- constant Visibility: default -->
<element name="varword64">
<short>Variant type: Word (64-bit) </short>
</element>
<!-- alias type Visibility: default -->
<element name="tvartype">
<short>Type with size of variant type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pvararrayboundarray">
<short>Pointer to <link id="tvararrayboundarray"/> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pvararraycoorarray">
<short>Pointer to <link id="tvararraycoorarray"/> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pvararraybound">
<short>Pointer to <link id="tvararraybound"/> type.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pvararray">
<short>Pointer to <link id="TVarArray"/> type.</short>
</element>
<!-- record type Visibility: default -->
<element name="tvararraybound">
<short>Type describing variant array bounds.</short>
<descr>
<var>tvararraybound</var> is used to describe one dimension in a variant
array.
</descr>
<seealso>
<link id="tvararray"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="tvararraybound.elementcount">
<short>Number of elements in this array dimension.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvararraybound.lowbound">
<short>Lower bound of this array dimension (index of first element).</short>
</element>
<!-- record type Visibility: default -->
<element name="tvararray">
<short>Type describing variant array</short>
<descr>
<var>tvararray</var> is a record describing a variant array. It contains
some general data, followed by a number of <link id="TVarArrayBound"/>
records equal to the number of dimensions in the array (<var>dimcoun</var>).
</descr>
<seealso>
<link id="TVarArrayBound"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="tvararray.dimcount">
<short>Number of dimensions</short>
</element>
<!-- variable Visibility: default -->
<element name="tvararray.flags">
<short>Array flags.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvararray.elementsize">
<short>Size of one element in the array.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvararray.lockcount">
<short>Lock (reference) count of the array.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvararray.data">
<short>Pointer to the array data.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvararray.bounds">
<short>Array describing the bounds in the array.</short>
</element>
<!-- array type Visibility: default -->
<element name="tvararrayboundarray">
<short>array of <link id="tvararraybound"/> records.</short>
</element>
<!-- array type Visibility: default -->
<element name="tvararraycoorarray">
<short>Array of variant array coordinates</short>
</element>
<!-- enumeration type Visibility: default -->
<element name="tvarop">
<short>Variant operation.</short>
<descr>
<var>tvarop</var> describes a variant operation. It is mainly used for the
variant manager to implement the various conversions and mathematical
operations on a variant.
</descr>
<seealso>
<link id="TVariantManager"/>
</seealso>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opadd">
<short>Variant operation: Addition.</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opsubtract">
<short>Variant operation: Substraction</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opmultiply">
<short>Variant operation: multiplication</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opdivide">
<short>Variant operation: division</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opintdivide">
<short>Variant operation: integer divide</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opmodulus">
<short>Variant operation: Modulus</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opshiftleft">
<short>Variant operation: Shift left</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opshiftright">
<short>Variant operation: Shift right</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opand">
<short>Variant operation: Binary AND operation</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opor">
<short>Variant operation: Binary OR operation</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opxor">
<short>Variant operation: binary XOR operation.</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcompare">
<short>Variant operation: Compare</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opnegate">
<short>Variant operation: negation.</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opnot">
<short>Variant operation: Binary NOT operation.</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcmpeq">
<short>Variant operation: Compare equal.</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcmpne">
<short>Variant operation: Compare not equal</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcmplt">
<short>Variant operation: Compare less than.</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcmple">
<short>Variant operation: Compare less than or equal to</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcmpgt">
<short>Variant operation: Compare larger than</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.opcmpge">
<short>Variant operation: Compare larger than or equal</short>
</element>
<!-- record type Visibility: default -->
<element name="tvardata">
<short>Variant record.</short>
<descr>
<var>TVarData</var> is a record representation of a variant. It contains the
internal structure of a variant and is handled by the various variant
handling routines.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vtype">
<short>Type of variant.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pvardata">
<short>Pointer to <link id="TVarData"/> record.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="pcalldesc">
<short>Pointer to <link id="TCallDesc"/> record.</short>
</element>
<!-- record type Visibility: default -->
<element name="tcalldesc">
<short>COM/OLE dispatch call argument description.</short>
<descr>
<var>tcalldesc</var> is used to encode the arguments to a dispatch call to
an OLE dual interface. It is used on windows only. It describes the
arguments to a call.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="tcalldesc.calltype">
<short>Call type.</short>
</element>
<!-- variable Visibility: default -->
<element name="tcalldesc.argcount">
<short>Number of arguments to call.</short>
</element>
<!-- variable Visibility: default -->
<element name="tcalldesc.namedargcount">
<short>Number of named arguments in the call.</short>
</element>
<!-- variable Visibility: default -->
<element name="tcalldesc.argtypes">
<short>Types of arguments.</short>
</element>
<!-- pointer type Visibility: default -->
<element name="tdispdesc">
<short>COM/OLE dispatch call description.</short>
<descr>
<var>tcalldesc</var> is used to encode a dispatch call to an OLE dispatch
interface. It is used on windows only. It describes the dispath call call.
</descr>
<seealso>
<link id="tcalldesc"/>
</seealso>
</element>
<!-- record type Visibility: default -->
<element name="pdispdesc">
<short>Pointer to <link id="tdispdesc"/> record</short>
</element>
<!-- variable Visibility: default -->
<element name="tdispdesc.dispid">
<short>Dispatch ID</short>
</element>
<!-- variable Visibility: default -->
<element name="tdispdesc.restype">
<short>Result type.</short>
</element>
<!-- variable Visibility: default -->
<element name="tdispdesc.calldesc">
<short>Arguments description.</short>
</element>
<!-- record type Visibility: default -->
<element name="tvariantmanager">
<short>Record describing the variant manager.</short>
<descr>
<var>TVariantManager</var> describes the variant manager as expected by the
<link id="SetVariantManager"/> call.
</descr>
<seealso>
<link id="SetVariantManager"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartoint">
<short>Called to convert a variant to an integer value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartoint64">
<short>Called to convert a variant to an int64 value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartoword64">
<short>Called to convert a variant to a word64 value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartobool">
<short>Called to convert a variant to a boolean value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartoreal">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartocurr">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartopstr">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartolstr">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartowstr">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartointf">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartodisp">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartodynarray">
<short>Called to convert a variant to a value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfrombool">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromint">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromint64">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromword64">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromreal">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfrompstr">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromlstr">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromwstr">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromintf">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromdisp">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromdynarray">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.olevarfrompstr">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.olevarfromlstr">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.olevarfromvar">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.olevarfromint">
<short>Called to convert a value to a variant</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varop">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.cmpop">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varneg">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varnot">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varinit">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varclear">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varaddref">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varcopy">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varcast">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varcastole">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.dispinvoke">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vararrayredim">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vararrayget">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vararrayput">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.writevariant">
<short>Called to perform a variant operation: </short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.write0Variant">
<short>Called to perform a variant operation: </short>
</element>
<!-- pointer type Visibility: default -->
<element name="pvariantmanager">
<short>Pointer to <link id="TVariantManager"/> record.</short>
</element>
<!-- procedure Visibility: default -->
<element name="GetVariantManager">
<short>Return the current variant manager.</short>
<descr>
<var>GetVariantManager</var> returns the current variant manager in
<var>varmgr</var>.
</descr>
<seealso>
<link id="IsVariantManagerSet"/>
<link id="SetVariantManager"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="SetVariantManager">
<short>Set the current variant manager.</short>
<descr>
<var>SetVariantManager</var> sets the variant manager to <var>varmgr</var>.
</descr>
<seealso>
<link id="IsVariantManagerSet"/>
<link id="GetVariantManager"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="IsVariantManagerSet">
<short>Determine if variant manager is currently set.</short>
<descr>
<p>
<var>IsVariantManagerSet</var> determines whether the variant manager was
set to a correct variant manager. It returns <var>True</var> if it is,
or <var>False</var> if it is not.
</p>
<p>The routine checks all variant operation handlers, they should all be set correctly.
</p>
</descr>
<seealso>
<link id="SetVariantManager"/>
<link id="GetVariantManager"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="VarDispProc">
<short>Callback to perform dispatch interface procedure call by name.</short>
<descr>
<p>
<var>VarDispProc</var> is called by the compiler if it needs to perform an
interface call from a variant. For instance, the following call:
</p>
<code>Var
V : OleVariant;
begin
V.OpenDocument('c:\temp\mydoc.doc');
end;
</code>
<p>is encoded by the compiler and passed to <var>VarDispProc</var>.
</p>
<p>This pointer must be set by a routine that calls the OS COM handling
routines.
</p>
</descr>
<seealso>
<link id="DispCallByIDProc"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="DispCallByIDProc">
<short>Callback to perform dispatch interface procedure call by ID.</short>
<descr>
<p>
<var>VarDispProc</var> is called by the compiler if it needs to perform an
interface call from a variant which contains a dispatch interface.
For instance, the following call:
</p>
<code>Var
V : OleVariant;
begin
(V as IWord).OpenDocument('c:\temp\mydoc.doc');
end;
</code>
<p>where <var>IWord</var> is a dispatch interface is encoded by the compiler and
passed to <var>DispCallByIDProc</var>.
</p>
<p>This pointer must be set by a routine that calls the OS COM handling
routines.
</p>
</descr>
<seealso>
<link id="VarDispProc"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="Null">
<short>Null variant</short>
</element>
<!-- variable Visibility: default -->
<element name="Unassigned">
<short>Unassigned variant.</short>
</element>
<!-- record type Visibility: default -->
<element name="THeapStatus">
<short>Record describing current heap status.</short>
<descr>
<var>THeapStatus</var> is the record describing the current heap status. It
is returned by the <link id="GetHeapStatus"/> call.
</descr>
<seealso>
<link id="GetHeapStatus"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.MaxHeapSize">
<short>Biggest heap size used.</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.MaxHeapUsed">
<short>Biggest used part of heap memory.</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.CurrHeapSize">
<short>Current heap size. </short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.CurrHeapUsed">
<short>Current size of used heap memory.</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.CurrHeapFree">
<short>Current size of free heap memory.</short>
</element>
<!-- procedure Visibility: default -->
<element name="SysGetHeapStatus">
<short>System implementation of <link id="GetHeapStatus"/>
</short>
<descr>
<var>SysGetHeapStatus</var> is the system implementation of the <link id="GetHeapStatus"/> call.
</descr>
<seealso>
<link id="GetHeapStatus"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="Heapsize">
<short>Current heap size</short>
<descr>
<var>HeapSize</var> returns the current heap size. The heap grows
dynamically (as allowed by the OS) and the <var>HeapSize</var> reflects the
current state of the heap.
</descr>
<seealso>
<link id="GetHeapStatus"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="TThreadID">
<short>Type for Thread-IDs</short>
<descr>This is an opaque type, it can differ from operating system to operating
system.
</descr>
</element>
<!-- pointer type Visibility: default -->
<element name="PRTLCriticalSection">
<short>Pointer to <link id="#rtl.system.TRTLCriticalSection"/> type.</short>
<descr/>
<seealso/>
</element>
<!-- record type Visibility: default -->
<element name="TRTLCriticalSection" opaque="1">
<short>A critical section.</short>
<descr>
<var>TRTLCriticalSection</var> represents a critical section (a mutex). This is an opaque type,
it can differ from operating system to operating system. No assumptions
should be made about it's structure or contents.
</descr>
</element>
<!-- constant Visibility: default -->
<element name="InitProc">
<short>Initialization routine</short>
<descr>
<p>
<var>InitProc</var> is a routine that can be called after all units were
initialized. It can be set by units to execute code that can be initialized
after all units were initialized.
</p>
<remark>When setting the value of <var>InitProc</var>, the previous value should
always be saved, and called when the installed initialization routine has
finished executing.
</remark>
</descr>
<seealso>
<link id="ExitProc"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="GetProcessID">
<short>Get the current process ID</short>
<descr>
<var>GetProcessID</var> returns the current process ID.
The meaning of the return value of this call is system dependent.
</descr>
<errors>None.
</errors>
<seealso>
<link id="GetThreadID"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="GetThreadID">
<short>Get the current Thread ID.</short>
<descr>
<var>GetThreadID</var> returns the current process ID.
The meaning of the return value of this call is system dependent.
</descr>
<seealso>
<link id="GetProcessID"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="S_OK">
<short>Interface call result: OK</short>
</element>
<!-- constant Visibility: default -->
<element name="S_FALSE">
<short>Interface call result: Not OK</short>
</element>
<!-- constant Visibility: default -->
<element name="E_NOINTERFACE">
<short>Interface call result: Error: not an interface</short>
</element>
<!-- constant Visibility: default -->
<element name="E_UNEXPECTED">
<short>Interface call result: Unexpected error</short>
</element>
<!-- constant Visibility: default -->
<element name="E_NOTIMPL">
<short>Interface call result: Interface not implemented</short>
</element>
<!-- record type Visibility: default -->
<element name="TMethod">
<short>Record describing a method.</short>
<descr>
<var>TMethod</var> describes a general method pointer, and is used in
Run-Time Type Information handling.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TMethod.Code">
<short>Pointer to method code.</short>
</element>
<!-- variable Visibility: default -->
<element name="TMethod.Data">
<short>Pointer to object instance.</short>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.Framecount">
<short>Number of frames in the exception object</short>
</element>
<!-- variable Visibility: default -->
<element name="TExceptObject.Frames">
<short>Pointer to array of frame pointers</short>
</element>
<!-- constant Visibility: default -->
<element name="RaiseMaxFrameCount">
<short>Maximum number of frames to include in <link id="#rtl.system.TExceptObject">TExceptObject</link>
</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tvarop.oppower">
<short>Variant operation: Power</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.vartotdatetime">
<short>Callback to convert a variant to a <var>TDatetime</var> value.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromtdatetime">
<short>Callback to convert a <var>TDateTime</var> value to a variant.</short>
</element>
<!-- variable Visibility: default -->
<element name="tvariantmanager.varfromcurr">
<short>Callback to convert a variant to a currency value.</short>
</element>
<!-- constant Visibility: default -->
<element name="VarClearProc">
<short>Callback to clear a variant.</short>
</element>
<!-- constant Visibility: default -->
<element name="VarAddRefProc">
<short>Callback to increase reference count of a variant.</short>
</element>
<!-- constant Visibility: default -->
<element name="VarCopyProc">
<short>Callback to copy a variant</short>
</element>
<!-- constant Visibility: default -->
<element name="VarToLStrProc">
<short>Callback to convert a variant to a ansistring.</short>
</element>
<!-- constant Visibility: default -->
<element name="VarToWStrProc">
<short>Callback to convert a variant to a widestring.</short>
</element>
<!-- procedure Visibility: default -->
<element name="VarArrayRedim">
<short>Redimension a variant array</short>
<descr>
<var>VarArrayRedim</var> re-sizes the first dimension of the variant array
<var>A</var>, giving it a new high bound <var>HighBound</var>.
Obviously, <var>A</var> must be a variant array for this function to work.
</descr>
<errors/>
<seealso/>
</element>
<!-- array type Visibility: default -->
<element name="fpc_big_widechararray" skip="1">
<short>Internal type used by widestring routines. Do not use</short>
</element>
<!-- constant Visibility: default -->
<element name="DefaultStackSize">
<short>Default size for a new thread's stack (32k by default).</short>
</element>
<!-- alias type Visibility: default -->
<element name="PEventState">
<short>Pointer to EventState, which is an opaque type.</short>
</element>
<!-- alias type Visibility: default -->
<element name="PRTLEvent">
<short>Pointer to RTLEvent, which is an opaque type.</short>
</element>
<!-- function type Visibility: default -->
<element name="TThreadFunc">
<short>Thread function prototype</short>
</element>
<!-- procedure type Visibility: default -->
<element name="trtlmethod">
<short>Callback type for synchronization event.</short>
</element>
<!-- function type Visibility: default -->
<element name="TBeginThreadHandler">
<short>Callback for thread start in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TEndThreadHandler">
<short>Callback for thread end in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TThreadHandler">
<short>Generic thread handler callback for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TThreadSwitchHandler">
<short>Callback type for thread switch in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TWaitForThreadTerminateHandler">
<short>Callback type for thread termination in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TThreadSetPriorityHandler">
<short>Callback type for thread priority setting in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TThreadGetPriorityHandler">
<short>Callback type for thread priority getting in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TGetCurrentThreadIdHandler">
<short>Callback type for retrieving thread ID in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TCriticalSectionHandler">
<short>Generic callback type for critical section handling in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TInitThreadVarHandler">
<short>Threadvar initialization callback type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TRelocateThreadVarHandler">
<short>Threadvar relocalization callback type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TAllocateThreadVarsHandler">
<short>Threadvar allocation callback type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TReleaseThreadVarsHandler">
<short>Threadvar release callback type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TBasicEventHandler">
<short>Generic callback type for handling eventstate in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TBasicEventWaitForHandler">
<short>Wait for basic event callback type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TBasicEventCreateHandler">
<short>callback type for creating eventstate in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TRTLEventHandler">
<short>Generic TRTLEvent handling type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TRTLEventHandlerTimeout">
<short>TRTLEvent timeout handling type for <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- function type Visibility: default -->
<element name="TRTLCreateEventHandler">
<short>Callback type for creating a <var>TRTLEvent</var> type in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- procedure type Visibility: default -->
<element name="TRTLEventSyncHandler">
<short>Callback type for event sycnhronization in <link id="#rtl.system.TThreadManager">TThreadManager</link>.</short>
</element>
<!-- record type Visibility: default -->
<element name="TThreadManager">
<short>Thread manager record.</short>
<descr>
<p>
<var>TThreadManager</var> is a record that contains all callbacks needed for the thread handling
routines of the Free Pascal Run-Time Library. The thread manager can be set
by the <link id="SetThreadManager"/> procedure, and the current thread
manager can be retrieved with the <link id="GetThreadManager"/> procedure.
</p>
<p>The Windows RTL will set the thread manager automatically to a system thread
manager, based on the Windows threading routines. Unix operating systems
provide a unit <file>cthreads</file> which implements threads based on the C
library POSIX thread routines. It is not included by default, because it
would make the system unit dependent on the C library.
</p>
<p>For more information about thread programming, see the programmer's guide.
</p>
</descr>
<seealso>
<link id="GetThreadManager"/>
<link id="SetThreadManager"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.InitManager">
<short>Initialize the thread manager.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.DoneManager">
<short>Clean up the thread manager.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.BeginThread">
<short>Start a new thread.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.EndThread">
<short>End the current thread.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.SuspendThread">
<short>Suspend a running thread.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.ResumeThread">
<short>Resumt a suspended thread.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.KillThread">
<short>Kill a running thread.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.ThreadSwitch">
<short>Cause a threadswitch.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.WaitForThreadTerminate">
<short>Wait for a thread to stop.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.ThreadSetPriority">
<short>Set thread priority</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.ThreadGetPriority">
<short>Get thread priority.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.GetCurrentThreadId">
<short>Get current thread ID</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.InitCriticalSection">
<short>Initialize a critical section.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.DoneCriticalSection">
<short>Free a critical section</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.EnterCriticalSection">
<short>Enter a critical section</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.LeaveCriticalSection">
<short>leave a critical section.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.InitThreadVar">
<short>Initialize a thread variable.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RelocateThreadVar">
<short>Relocate a thread variable.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.AllocateThreadVars">
<short>Allocate thread variables.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.ReleaseThreadVars">
<short>Release thread variables.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.BasicEventCreate">
<short>Create a basic event.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.BasicEventDestroy">
<short>Destroy a basic event.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.BasicEventResetEvent">
<short>Reset a basic event.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.BasicEventSetEvent">
<short>Set a basic event</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.BasiceventWaitFOr">
<short>Wait for a basic event</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventCreate">
<short>Create an RTL event</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventDestroy">
<short>Free an RTL event</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventSetEvent">
<short>Set an RTL event</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventResetEvent">
<short>Reset an RTL event</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventStartWait">
<short>Wait for an RTL event.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventWaitFor">
<short>Wait for an RTL event.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventSync">
<short>Synchronize an RTL event.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.RTLEventWaitForTimeout">
<short>Wait for RTL event, with timeout.</short>
</element>
<!-- function Visibility: default -->
<element name="GetThreadManager">
<short>Return the current thread manager</short>
<descr>
<p>
<var>GetThreadManager</var> returns the currently used thread manager in
<var>TM</var>.
</p>
<p>For more information about thread programming, see the programmer's guide.
</p>
</descr>
<seealso>
<link id="SetThreadManager"/>
<link id="TThreadManager"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SetThreadManager">
<short>Set the thread manager, optionally return the current thread manager.</short>
<descr>
<p>
<var>SetThreadManager</var> sets the thread manager to <var>NewTM</var>.
If <var>OldTM</var> is given, <var>SetThreadManager</var> uses it to return the
previously used thread manager.
</p>
<p>The function returns <var>True</var> if the threadmanager was set
succesfully, <var>False</var> if an error occurred.
</p>
<p>For more information about thread programming, see the programmer's guide.
</p>
</descr>
<errors>If an error occurred cleaning up the previous manager, or an error occurred
initializing the new manager, <var>False</var> is returned.
</errors>
<seealso>
<link id="GetThreadManager"/>
<link id="TThreadManager"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="SetNoThreadManager">
<short>Clear the threadmanager</short>
<descr>
<var>SetNoThreadManager</var> clears the thread manager by setting the
thread manager to an empty thread manager record.
</descr>
</element>
<!-- procedure Visibility: default -->
<element name="InitThread">
<short>Initialize a thread</short>
<descr>Do not use, this is used internally by the thread manager.
</descr>
</element>
<!-- function Visibility: default -->
<element name="BeginThread">
<short>Start a new thread.</short>
<descr>
<p>
<var>BeginThread</var> starts a new thread and executes
<var>ThreadFunction</var> in the new thread. If <var>P</var> is specified,
then it is passed to <var>ThreadFunction</var>. If <var>ThreadId</var> is
specified, it is filled with the thread ID of the newly started thread. If
<var>StackSize</var> is specified, it is set as the stack size for the new
thread. If none is specified, a default stack size of 32Kb is used.
</p>
<p>The function returns the thread ID on succes, or 0 if an error occurred.
</p>
</descr>
<errors>On error, a nonzero value is returned.
</errors>
<seealso>
<link id="EndThread"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="EndThread">
<short>End the current thread.</short>
<descr>
<p>
<var>EndThread</var> ends the current thread. If <var>ExitCode</var> is
supplied, it is returned as the exit code for the thread to a function
waiting for the thread to terminate (<link id="WaitForThreadTerminate"/>).
If it is omitted, zero is used.
</p>
<p>This function does not return.
</p>
</descr>
<seealso>
<link id="WaitForThreadTerminate"/>
<link id="BeginThread"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SuspendThread">
<short>Suspend a running thread.</short>
<descr>
<p>
<var>SuspendThread</var> suspends a running thread. The thread is identified
with it's handle or ID <var>threadHandle</var>.
</p>
<p>The function returns zero if succesful. A nonzero return value indicates
failure.
</p>
</descr>
<errors>If a failure occurred, a nonzero result is returned. The meaning is system
dependent.
</errors>
<seealso>
<link id="ResumeThread"/>
<link id="KillThread"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="ResumeThread">
<short>Resume a suspended thread.</short>
<descr>
<p>
<var>ResumeThread</var> causes a suspended thread (using <link id="SuspendThread"/>) to resume it's execution. The thread is
identified with it's handle or ID <var>threadHandle</var>.
</p>
<p>The function returns zero if succesful. A nonzero return value indicates
failure.
</p>
</descr>
<errors>If a failure occurred, a nonzero result is returned. The meaning is system
dependent.
</errors>
<seealso>
<link id="SuspendThread"/>
<link id="KillThread"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="ThreadSwitch">
<short>Signal possibility of thread switch</short>
<descr>
<p>
<var>ThreadSwitch</var> signals the operating system that the thread should
be suspended and that another thread should be executed.
</p>
<p>This call is a hint only, and may be ignored.
</p>
</descr>
<seealso>
<link id="SuspendThread"/>
<link id="ResumeThread"/>
<link id="KillThread"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="KillThread">
<short>Kill a running thread</short>
<descr>
<p>
<var>KillThread</var> causes a running thread to be aborted. The thread is
identified by it's handle or ID <var>threadHandle</var>.
</p>
<p>The function returns zero if succesful. A nonzero return value indicates
failure.
</p>
</descr>
<errors>If a failure occurred, a nonzero result is returned. The meaning is system
dependent.
</errors>
<seealso>
<link id="WaitForThreadTerminate"/>
<link id="EndThread"/>
<link id="SuspendThread"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="WaitForThreadTerminate">
<short>Wait for a thread to terminate.</short>
<descr>
<p>
<var>WaitForThreadTerminate</var> waits for a thread to finish its
execution. The thread is identified by it's handle or ID
<var>threadHandle</var>. If the thread does not exit within <var>TimeoutMs</var>
milliseconds, the function will return with an error value.
</p>
<p>The function returns the exit code of the thread.
</p>
</descr>
<seealso>
<link id="EndThread"/>
<link id="KillThread"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="ThreadSetPriority">
<short>Set the priority of a thread.</short>
<descr>
<var>ThreadSetPriority</var> sets the priority of thread <var>TThreadID</var> to <var>Prio</var>.
Priority is a value between -15 and 15.
</descr>
<errors>None.
</errors>
<seealso>
<link id="ThreadGetPriority"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="ThreadGetPriority">
<short>Return the priority of a thread.</short>
<descr>
<var>ThreadGetPriority</var> returns the priority of thread
<var>TThreadID</var> to <var>Prio</var>. The returned priority
is a value between -15 and 15.
</descr>
<errors>None.
</errors>
<seealso>
<link id="ThreadSetPriority"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="GetCurrentThreadId">
<short>Return the id of the currently running thread.</short>
<descr>
<var>GetCurrentThreadId</var> returns the ID of the currently running
thread. It can be used in calls such as <link id="KillThread"/> or
<link id="ThreadSetPriority"/>
</descr>
<errors>None.
</errors>
<seealso>
<link id="KillThread"/>
<link id="ThreadSetPriority"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="InitCriticalSection">
<short>Initialize a critical section</short>
<descr>
<p>
<var>InitCriticalSection</var> initializes a critical section <var>CS</var>
for use. Before using a critical section with <link id="EnterCriticalsection"/> or
<link id="LeaveCriticalsection"/> the critical section should be initialized
with <var>InitCriticalSection</var>.
</p>
<p>When a critical section is no longer used, it should be disposed of with
<link id="DoneCriticalsection"/>
</p>
</descr>
<seealso>
<link id="DoneCriticalsection"/>
<link id="EnterCriticalsection"/>
<link id="LeaveCriticalsection"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="DoneCriticalsection">
<short>Clean up a critical section.</short>
<descr>
<var>DoneCriticalsection</var> cleans up the critical section <var>CS</var>.
After a call to <var>DoneCriticalsection</var>, the critical section can no
longer be used with <link id="EnterCriticalsection"/> or
<link id="LeaveCriticalsection"/>, unless it is again initialized with <link id="InitCriticalSection"/>
</descr>
<seealso>
<link id="InitCriticalsection"/>
<link id="EnterCriticalsection"/>
<link id="LeaveCriticalsection"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="EnterCriticalSection">
<short>Enter a critical section</short>
<descr>
<p>
<var>EnterCriticalSection</var> will suspend the current thread if another
thread has currently entered the critical section. When the other thread has
left the critical section (through <link id="LeaveCriticalSection"/>), the
current thread resumes execution. The result is that only 1 thread is
executing code which is protected by a <var>EnterCriticalsection</var> and
<var>LeaveCriticalSection</var> pair.
</p>
<p>The critical section must have been initialized with <link id="InitCriticalSection"/>
prior to a call to <var>EnterCriticalsection</var>.
</p>
<p>A call to <var>EnterCriticalsection</var> must always be matched by a call
to <link id="LeaveCriticalSection"/>. To avoid problems, it is best to
include the code to be execute in a <var>try...finally</var> block, as
follows:
</p>
<code>EnterCriticalSection(Section);
Try
// Code to be protected goes here.
Finally
LeaveCriticalSection(Section);
end;
</code>
<p>For performance reasons it is best to limit the code between the entering
and leaving of a critical section as short as possible.
</p>
</descr>
<seealso>
<link id="InitCriticalsection"/>
<link id="DoneCriticalsection"/>
<link id="LeaveCriticalsection"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="LeaveCriticalsection">
<short>Leave a critical section</short>
<descr>
<p>
<var>LeaveCriticalSection</var> signals that the current thread is exiting
the critical section <var>CS</var> it has entered with <link id="EnterCriticalSection"/>.
</p>
<p>The critical section must have been initialized with <link id="InitCriticalSection"/>
prior to a call to <var>EnterCriticalsection</var> and <var>LeaveCriticalSection</var>.
</p>
</descr>
<seealso>
<link id="InitCriticalsection"/>
<link id="DoneCriticalsection"/>
<link id="EnterCriticalsection"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="BasicEventCreate">
<short>Obsolete. Don't use</short>
<descr>
<var>BasicEventCreate</var> is obsolete, use <link id="RTLEventCreate"/>
instead.
</descr>
<seealso>
<link id="RTLEventCreate"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="basiceventdestroy">
<short>Obsolete. Don't use</short>
<descr>
<var>basiceventdestroy</var> is obsolete. Use <link id="RTLEventDestroy"/>
instead.
</descr>
<seealso>
<link id="RTLEventDestroy"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="basiceventResetEvent">
<short>Obsolete. Don't use</short>
<descr>
<var>basiceventResetEvent</var> is obsolete. Use <link id="RTLEventResetEvent"/>
instead.
</descr>
<seealso>
<link id="RTLEventResetEvent"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="basiceventSetEvent">
<short>Obsolete. Don't use</short>
<descr>
<var>basiceventSetEvent</var> is obsolete. Use <link id="RTLEventSetEvent"/>
instead.
</descr>
<seealso>
<link id="RTLEventSetEvent"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="basiceventWaitFor">
<short>Obsolete. Don't use</short>
<descr>
<var>basiceventwaitfor</var> is obsolete. Use <link id="RTLEventWaitFor"/>
instead.
</descr>
<seealso>
<link id="RTLEventWaitFor"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RTLEventCreate">
<short>Create a new RTL event</short>
<descr>
<p>
<var>RTLEventCreate</var> creates and initializes a new RTL event. RTL
events are used to notify other threads that a certain condition is met,
and to notify other threads of condition changes (conditional variables).
</p>
<p>The function returns an initialized RTL event, which must be disposed of
with <link id="RTLEventdestroy"/>
</p>
<p>
<var>RTLEvent</var> is used mainly for the synchronize method.
</p>
</descr>
<seealso>
<link id="RTLEventDestroy"/>
<link id="RTLEventSetEvent"/>
<link id="RTLEventReSetEvent"/>
<link id="RTLEventWaitFor"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="RTLeventdestroy">
<short>Destroy a RTL Event</short>
<descr>
<var>RTLeventdestroy</var> destroys the RTL event <var>State</var>.
After a call to <var>RTLeventdestroy</var>, the <var>State</var> RTL event
may no longer be used.
</descr>
<seealso>
<link id="RTLEventCreate"/>
<link id="RTLEventResetEvent"/>
<link id="RTLEventSetEvent"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="RTLeventSetEvent">
<short>Notify threads of the event.</short>
<descr>
<var>RTLeventSetEvent</var> notifies other threads which are listening,
that the event has occurred.
</descr>
<seealso>
<link id="RTLEventCreate"/>
<link id="RTLEventResetEvent"/>
<link id="RTLEventDestroy"/>
<link id="RTLEventWaitFor"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="RTLeventResetEvent">
<short>Reset an event</short>
<descr>
<var>RTLeventResetEvent</var> resets the event: this should be used to undo
the signaled state of an event. Resetting an event that is not set (or was
already reset) has no effect.
</descr>
<seealso>
<link id="RTLEventCreate"/>
<link id="RTLEventDestroy"/>
<link id="RTLEventSetEvent"/>
<link id="RTLEventWaitFor"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="RTLeventStartWait">
<short>Prepare the event for waiting.</short>
<descr>
<p>
<var>RTLeventResetEvent</var> signals that a thread is ready to start
waiting on an event <var>state</var>. No event can be posted until a thread explicitly
starts waiting on the event using <link id="RTLEventWaitFor"/>.
</p>
</descr>
<seealso>
<link id="RTLEventCreate"/>
<link id="RTLEventDestroy"/>
<link id="RTLEventSetEvent"/>
<link id="RTLEventWaitFor"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="RTLeventWaitFor">
<short>Wait for an event.</short>
<descr>
<p>
<var>RTLeventWaitFor</var> suspends the thread till the event occurs. The
event will occur when another thread calls <link id="RTLEventSetEvent"/> on
<var>State</var>.
</p>
<p>By default, the thread will be suspended indefinitely. However, if
<var>TimeOut</var> is specified, then the thread will resume after timeout
milliseconds have elapsed.
</p>
</descr>
<seealso>
<link id="RTLEventCreate"/>
<link id="RTLEventDestroy"/>
<link id="RTLEventSetEvent"/>
<link id="RTLEventWaitFor"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="RTLeventsync">
<short>Obsolete. Don't use</short>
<descr>
<var>RTLeventsync</var> is obsolete, don't use it.
</descr>
</element>
<element name="ThreadingAlreadyUsed">
<short>Internal constant for the threading system. Don't use.</short>
</element>
<!-- constant Visibility: default -->
<element name="CtrlZMarksEOF">
<short>Determine whether CTRL-Z marks the end of file.</short>
<descr>
<p>
<var>CtrlZMarksEOF</var> indicates whether on this system, an
<var>CTRL-Z</var> character (ordinal 26) in a file marks the
end of the file. This is <var>False</var> on most systems except on DOS.
</p>
<p>To get DOS-compatible behaviour, this constant can be set to <var>True</var>
</p>
</descr>
<seealso>
<link id="LineEnding"/>
<link id="SetTextLineEnding"/>
</seealso>
</element>
<element name="SIGSTKSZ" skip="1"/>
<element name="AnsiToUtf8">
<short>Convert ansi string to UTF-8 string</short>
<descr>
<p>
<var>AnsiToUtf8</var> converts the ansistring <var>S</var> to a UTF-8
format, that is, it converts the string from whatever codepage is currently
in use, to UTF-8.
</p>
<p>The current codepage is fetched from the system, if internationalization support
is enabled. It can be UTF-8, in which case the function simply returns
<var>S</var>.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="Utf8toAnsi"/>
</seealso>
</element>
<element name="DefaultAnsi2WideMove">
<short>Standard implementation of Ansi to Widestring conversion routine</short>
<descr>
<var>DefaultAnsi2WideMove</var> simply copies each character of the
null-terminated ansi-string <var>Source</var> to the corresponding WideChar
in <var>Dest</var>. At most <var>Len</var> characters will be copied.
</descr>
<errors>None.
</errors>
<seealso>
<link id="DefaultWide2AnsiMove"/>
</seealso>
</element>
<element name="DefaultWide2AnsiMove">
<short>Standard implementation of Widestring to Ansi conversion routine</short>
<descr>
<var>DefaultWide2AnsiMove</var> simply copies each character from
<var>Source</var> having an ordinal value of less than 255 to the
corresponding character in <var>Dest</var>. Characters having an
ordinal valuelarger than 255 will be replaced by question marks.
At most <var>Len</var> characters will be copied.
</descr>
<errors>None.
</errors>
<seealso>
<link id="DefaultAnsi2WideMove"/>
</seealso>
</element>
<element name="DynArraySetLength">
<short>Set the length of a dynamic array</short>
<descr>
<p>
<var>DynArraySetLength</var> sets the length of the dynamical array
<var>a</var> to the first <var>dimCnt</var> lengths specified in the
array <var>lengthVec</var>. The dynamical array type is described in
<var>typeInfo</var> which points to a record of type <link id="TDynArrayTypeInfo"/>
</p>
<p>It should never be necessary to call this function directly, the
standard <link id="SetLength"/> function should be used instead.
</p>
</descr>
<errors>If an invalid pointer is specified, an error may occur.
</errors>
<seealso>
<link id="SetLength"/>
<link id="tdynarraytypeinfo"/>
</seealso>
</element>
<element name="GetFPCHeapStatus">
<short>Return FPC heap manager status information</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="HGLOBAL">
<short>Windows compatibility type for use in resources</short>
<descr>This is an opaque type.
</descr>
</element>
<element name="HINSTANCE">
<short>Windows compatibility type for use in resources</short>
<descr>This is an opaque type.
</descr>
</element>
<element name="HMODULE">
<short>Windows compatibility type for use in resources</short>
<descr>This is an opaque type.
</descr>
</element>
<element name="IDispatch">
<short>Dispatch interface</short>
<descr>
<var>IDispatch</var> is the pascal definition of the Windows Dispatch
interface definition.
</descr>
<seealso>
<link id="IUnknown"/>
</seealso>
</element>
<element name="IDispatch.GetIDsOfNames">
<short>Return IDs of named procedures</short>
<descr>Return the ID of a procedure.
</descr>
</element>
<element name="IDispatch.GetTypeInfo">
<short>Return type information about properties</short>
</element>
<element name="IDispatch.GetTypeInfoCount">
<short>Return number of properties.</short>
</element>
<element name="IDispatch.Invoke">
<short>Invoke a dispatch method</short>
</element>
<element name="IInterface">
<short>Basic interface for all COM based interfaces</short>
<descr>
<var>IInterface</var> is the basic interface from which all COM style
interfaces descend.
</descr>
<seealso>
<link id="IDispatch"/>
<link id="IInvokable"/>
</seealso>
</element>
<element name="IInvokable">
<short>Interface with RTTI associated with it.</short>
<descr>
<var>IInvokable</var> is a descendent of <link id="IInterface"/>, compiled
in the <var>{$M+}</var> state, so Run-Time Type Information (RTTI) is
generated for it.
</descr>
<seealso>
<link id="IDispatch"/>
<link id="IInterface"/>
</seealso>
</element>
<element name="InitThreadVars">
<short>Initialize threadvars </short>
<descr>This routine should be called when threading is started. It is called by the
compiler and should never be called manually, only from a thread manager.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TThreadManager"/>
<link id="TThreadManager.InitThreadVar"/>
</seealso>
</element>
<element name="IUnknown">
<short>Basic interface for all COM-based interfaces</short>
<descr>
<var>IUnknown</var> is defined by windows. It's the basic interface which
all COM objects must implement. The definition does not contain any code.
</descr>
<seealso>
<link id="IInterface"/>
<link id="IDispatch"/>
<link id="IInvokable"/>
</seealso>
</element>
<element name="IUnknown._AddRef">
<short>Increase reference count of the interface</short>
<seealso>
<link id="IUnknown._Release"/>
</seealso>
</element>
<element name="IUnknown.QueryInterface">
<short>Return pointer to VMT table of interface </short>
</element>
<element name="IUnknown._Release">
<short>Decrease reference count of the interface</short>
<seealso>
<link id="IUnknown._AddRef"/>
</seealso>
</element>
<element name="FindResource">
<short>Locate a resource and return a handle to it.</short>
<descr>
<var>FindResource</var> searches for a resource with name
<var>ResourceName</var> and of type <var>ResourceType</var>
in the executable or library identified by <var>ModuleHandle</var>.
It returns a <var>TResourceHandle</var> which can be used to load the
resource with <link id="LoadResource"/>.
</descr>
<errors>None. In case the resource was not found, 0 is returned.
</errors>
<seealso>
<link id="FreeResource"/>
<link id="LoadResource"/>
<link id="SizeofResource"/>
<link id="LockResource"/>
<link id="UnlockResource"/>
<link id="FreeResource"/>
</seealso>
</element>
<element name="FreeResource">
<short>Free a loaded resource</short>
<descr>
<var>FreeResource</var> unloads the resource identified by
<var>ResData</var> from memory. The resource must have been loaded by <link id="LoadResource"/>. It returns <var>True</var> if the operation was
succesful, <var>False</var> otherwise.
</descr>
<errors>On error, <var>False</var> is returned.
</errors>
<seealso>
<link id="FindResource"/>
<link id="LoadResource"/>
<link id="SizeofResource"/>
<link id="LockResource"/>
<link id="UnlockResource"/>
<link id="FreeResource"/>
</seealso>
</element>
<element name="LoadResource">
<short>Load a resource for use</short>
<descr>
<p>
<var>LoadResource</var> loads a resource identified by <var>ResHandle</var>
from a module identified by <var>ModuleHandle</var>into memory. It returns
a handle to the resource.
</p>
<p>Loaded resources must be unloaded again using the <link id="FreeResource"/>
function.
</p>
</descr>
<errors>On error, 0 is returned.
</errors>
<seealso>
<link id="FindResource"/>
<link id="FreeResource"/>
<link id="SizeofResource"/>
<link id="LockResource"/>
<link id="UnlockResource"/>
<link id="FreeResource"/>
</seealso>
</element>
<element name="LockResource">
<short>Lock a resource</short>
<descr>
<p>
<var>LockResource</var> locks a resource previously loaded by
<var>LoadResource</var> into memory. This means that any attempt to modify
the resource will fail while it is locked. The function returns a pointer to
the resource location in memory.
</p>
<p>The resource can be freed again using the <link id="UnlockResource"/>
function.
</p>
</descr>
<errors>if the function fails, <var>Nil</var> is returned.
</errors>
<seealso>
<link id="FindResource"/>
<link id="FreeResource"/>
<link id="SizeofResource"/>
<link id="LoadResource"/>
<link id="UnlockResource"/>
<link id="FreeResource"/>
</seealso>
</element>
<element name="SizeofResource">
<short>Return the size of a particular resource</short>
<descr>
<var>SizeOfResource</var> returns the size of the resource identified by
<var>ResHandle</var> in module identified by <var>ModuleHandle</var>.
<var>ResHandle</var> should be obtained from a call to <link id="LoadResource"/>
</descr>
<errors>In case of an error, 0 is returned.
</errors>
<seealso>
<link id="FindResource"/>
<link id="FreeResource"/>
<link id="LoadResource"/>
<link id="LockResource"/>
<link id="UnlockResource"/>
<link id="FreeResource"/>
</seealso>
</element>
<element name="UnlockResource">
<short>Unlock a previously locked resource</short>
<descr>
<var>UnlockResource</var> unlocks a previously locked resource. Note that
this function does not exist on windows, it's only needed on other
platforms.
</descr>
<errors>The function returns <var>False</var> if it failed.
</errors>
<seealso>
<link id="FindResource"/>
<link id="FreeResource"/>
<link id="SizeofResource"/>
<link id="LoadResource"/>
<link id="lockResource"/>
<link id="FreeResource"/>
</seealso>
</element>
<element name="MAKEINTRESOURCE">
<short>Alias for the <link id="#rtl.system.PChar">PChar</link> type.</short>
</element>
<element name="MaxKeptOSChunks">
<short>Maximum number of OS chunks to be kept in memory</short>
<descr>
<var>MaxKeptOSChunks</var> tells the heap manager how many free
chunks of OS-allocated memory it should keep in memory. When freeing memory,
it can happen that a memory block obtained from the OS is completely free.
If more than <var>MaxKeptOSChunks</var> such blocks are free, then the heap
manager will return them to the OS, to reduce memory requirements.
</descr>
<seealso>
<link id="FreeMem"/>
</seealso>
</element>
<element name="MaxPathLen">
<short>Constant defining the maximum length of filenames (including path)</short>
<descr>This constant is system dependent.
</descr>
</element>
<element name="BEtoN">
<short>Convert Big Endian-ordered integer to Native-ordered integer</short>
<descr>
<var>BEToN</var> will rearrange the bytes in a Big-Endian number to
the native order for the current processor. That is, for a big-endian
processor, it will do nothing, and for a little-endian processor,
it will invert the order of the bytes.
</descr>
<seealso>
<link id="LEtoN"/>
<link id="NtoBE"/>
<link id="NtoLE"/>
</seealso>
</element>
<element name="LEtoN">
<short>Convert Little Endian-ordered integer to Native-ordered integer</short>
<descr>
<var>LEToN</var> will rearrange the bytes in a Little-Endian number to
the native order for the current processor. That is, for a little-endian
processor, it will do nothing, and for a big-endian processor,
it will invert the order of the bytes.
</descr>
<seealso>
<link id="BEtoN"/>
<link id="NtoBE"/>
<link id="NtoLE"/>
</seealso>
</element>
<element name="NtoBE">
<short>Convert Native-ordered integer to a Big Endian-ordered integer</short>
<descr>
<var>NToBE</var> will rearrange the bytes in a natively-ordered number to
the Big-Endian order. That is, for a Little-Endian processor, it will
invert the order of the bytes and for a big-endian processor, it will do
nothing.
</descr>
<seealso>
<link id="BEtoN"/>
<link id="LEtoN"/>
<link id="NtoLE"/>
</seealso>
</element>
<element name="NtoLE">
<short>Convert Native-ordered integer to a Little Endian-ordered integer</short>
<descr>
<var>NToLE</var> will rearrange the bytes in a natively-ordered number to
the little-Endian order. That is, for a Big-Endian processor, it will
invert the order of the bytes and for a Little-Endian processor, it will do
nothing.
</descr>
<seealso>
<link id="BEtoN"/>
<link id="LEtoN"/>
<link id="NtoBE"/>
</seealso>
</element>
<element name="PDispatch">
<short>Pointer to <link id="#rtl.system.IDispatch">IDispatch</link> interface type</short>
</element>
<element name="PDynArrayTypeInfo">
<short>Pointer to <link id="#rtl.system.tdynarraytypeinfo">TDynArrayTypeInfo</link> type.</short>
</element>
<element name="PPDispatch">
<short>Pointer to <link id="#rtl.system.PDispatch">PDispatch</link> pointer type</short>
</element>
<element name="PPUnknown">
<short>Pointer to untyped pointer</short>
</element>
<element name="PUnknown">
<short>Untyped pointer</short>
</element>
<element name="PWideString">
<short>Pointer to widestring type</short>
</element>
<element name="RT_ACCELERATOR">
<short>Constant identifying an accelerator resouce</short>
</element>
<element name="RT_BITMAP">
<short>Constant identifying a bitmap resource</short>
</element>
<element name="RT_CURSOR">
<short>Constant identifying a cursor resource</short>
</element>
<element name="RT_DIALOG">
<short>Constant identifying a dialog resource</short>
</element>
<element name="RT_FONT">
<short>Constant identifying a font resource</short>
</element>
<element name="RT_FONTDIR">
<short>Constant identifying a font directory resource</short>
</element>
<element name="RT_GROUP_CURSOR">
<short>Constant identifying a group cursor resource</short>
</element>
<element name="RT_GROUP_ICON">
<short>Constant identifying a group icon resource</short>
</element>
<element name="RT_ICON">
<short>Constant identifying an icon resource</short>
</element>
<element name="RT_MENU">
<short>Constant identifying a menu resource</short>
</element>
<element name="RT_MESSAGETABLE">
<short>Constant identifying a message data resource</short>
</element>
<element name="RT_RCDATA">
<short>Constant identifying a binary data resource</short>
</element>
<element name="RT_STRING">
<short>Constant identifying a string table resource</short>
</element>
<element name="RT_VERSION">
<short>Constant identifying a version info resource</short>
</element>
<element name="RuntimeErrorExitCodes">
<short>Mapping between runtime-error constants and program exit codes</short>
<descr>This array is used by the <link id="Error"/> routine to to convert a
<link id="TRuntimeError"/> enumeration type to a process exit code.
</descr>
<seealso>
<link id="Error"/>
</seealso>
</element>
<element name="SafeCallErrorProc">
<short>Error handler for safecall errors</short>
<descr>
<var>SafeCallErrorProc</var> is a Handler called in case of a
safecall calling convention error. <var>Error</var> is the error
number (passed by the Windows operating system) and <var>Addr</var> is the address where the
error occurred.
</descr>
<seealso>
<link id="TSafeCallErrorProc"/>
</seealso>
</element>
<element name="GetWideStringManager">
<short>Return a copy of the currently active widestring manager.</short>
<descr>
<p>
<var>GetWideStringManager</var> returns a copy of the currently active
heap manager in <var>Old</var>
</p>
<p>WideStrings are implemented in different ways on different platforms.
Therefore, the Free Pascal Runtime library has no fixed implementation of
widestring routines. Instead, it defines a WideString manager record,
with callbacks that can be set to an implementation which is most
efficient on the current platform. On windows, standard Windows
routines will be used. On Unix and Linux, an implementation based on the
C library is available (in unit <file>cwstring</file>).
</p>
<p>It is possible to implement a custom widestring manager, optimized for
the current application, without having to recompile the complete Run-Time Library.
</p>
</descr>
<seealso>
<link id="SetWideStringManager"/>
<link id="TWideStringManager"/>
</seealso>
</element>
<element name="SetWideStringManager">
<short>Set the widestring manager</short>
<descr>
<p>
<var>SetWideStringManager</var> sets the current widestring manager to <var>New</var>.
Optionally, it returns the currently active widestring manager in <var>Old</var>.
</p>
<p>WideStrings are implemented in different ways on different platforms.
Therefore, the Free Pascal Runtime library has no fixed implementation of
widestring routines. Instead, it defines a WideString manager record,
with callbacks that can be set to an implementation which is most
efficient on the current platform. On windows, standard Windows
routines will be used. On Unix and Linux, an implementation based on the
C library is available (in unit <file>cwstring</file>).
</p>
<p>It is possible to implement a custom widestring manager, optimized for
the current application, without having to recompile the complete Run-Time Library.
</p>
</descr>
<errors/>
<seealso>
<link id="TWideStringManager"/>
</seealso>
</element>
<element name="TWideStringManager">
<short>Record containing the various callbacks of the widestring manager.</short>
<descr>
<var>TWideStringManager</var> contains the definition of the widestring manager.
</descr>
<errors/>
<seealso/>
</element>
<element name="TWideStringManager.Wide2AnsiMoveProc">
<short>Convert an AnsiString to a WideString</short>
</element>
<element name="TWideStringManager.Ansi2WideMoveProc">
<short>Convert a WideString to an AnsiString</short>
</element>
<element name="TWideStringManager.UpperWideStringProc">
<short>Convert a widestring to all-uppercase</short>
</element>
<element name="TWideStringManager.LowerWideStringProc">
<short>Convert a widestring to all-lowercase</short>
</element>
<element name="TWideStringManager.CompareWideStringProc">
<short>Compare 2 widestrings, case-sensitive</short>
</element>
<element name="TWideStringManager.CompareTextWideStringProc">
<short>Compare 2 widestrings, case-insensitive</short>
</element>
<element name="TWideStringManager.CharLengthPCharProc">
<short>Return the length, in characters, of a widestring</short>
</element>
<element name="TWideStringManager.UpperAnsiStringProc">
<short>Convert an ansistring to all-uppercase</short>
</element>
<element name="TWideStringManager.LowerAnsiStringProc">
<short>Convert an ansistring to all-lowercase</short>
</element>
<element name="TWideStringManager.CompareStrAnsiStringProc">
<short>Compare 2 ansistrings, case-sensitive</short>
</element>
<element name="TWideStringManager.CompareTextAnsiStringProc">
<short>Compare 2 ansistrings, case-insensitive</short>
</element>
<element name="TWideStringManager.StrCompAnsiStringProc">
<short>Compare 2 null-terminated ansistrings, case-sensitive</short>
</element>
<element name="TWideStringManager.StrICompAnsiStringProc">
<short>Compare 2 null-terminated ansistrings, case-insensitive</short>
</element>
<element name="TWideStringManager.StrLCompAnsiStringProc">
<short>Compare 2 null-terminated ansistrings, case-sensitive, for a maximum length</short>
</element>
<element name="TWideStringManager.StrLICompAnsiStringProc">
<short>Compare 2 null-terminated ansistrings, case-insensitive, for a maximum length</short>
</element>
<element name="TWideStringManager.StrLowerAnsiStringProc">
<short>Convert an ansistring to all-lowercase</short>
</element>
<element name="TWideStringManager.StrUpperAnsiStringProc">
<short>Convert an ansistring to all-uppercase</short>
</element>
<element name="StackTop">
<short>Top location of the stack.</short>
<descr>
<var>StackTop</var> contains the top of the stack for the current process.
It is used to check the heap on some operating systems, and is set by the
system unit initialization code. Do not use or modify this value.
</descr>
<seealso>
<link id="StackBottom"/>
<link id="StackLength"/>
</seealso>
</element>
<element name="StringToWideChar">
<short>Convert a string to an array of widechars.</short>
<descr>
<var>StringToWideChar</var> converts an ansistring <var>Src</var>
to a null-terminated array of WideChars. The destination for this
array is pointed to by <var>Dest</var>, and contains room for at
least <var>DestSize</var> widechars.
</descr>
<errors>No validity checking is performed on <var>Dest</var>.
</errors>
<seealso>
<link id="WideCharToString"/>
<link id="WideCharToStrVar"/>
<link id="WideCharLenToStrVar"/>
<link id="WideCharLenToString"/>
</seealso>
</element>
<element name="SysGetFPCHeapStatus">
<short>Return the status of the FPC heapmanager</short>
<descr>
<var>SysGetFPCHeapStatus</var> returns the status of the
default FPC heapmanager. It is set as the default value
of the corresponding <link id="GetFPCHeapStatus"/> function.
</descr>
<errors>None. The result of this function is bogus information if
the current heapmanager is not the standard FPC heapmanager.
</errors>
<seealso>
<link id="GetFPCHeapStatus"/>
</seealso>
</element>
<element name="tdynarraytypeinfo">
<short>Type information for a dynamic array.</short>
<descr>
<var>tdynarraytypeinfo</var> describes the structure of
a multi-dimensional dynamical array.
It is used in the <link id="DynArraySetLength"/> call.
</descr>
<seealso>
<link id="DynArraySetLength"/>
</seealso>
</element>
<element name="tdynarraytypeinfo.kind">
<short>Kind of array.</short>
</element>
<element name="tdynarraytypeinfo.namelen">
<short>Length of the Name of the array type. Name follows as Namelen characters.</short>
</element>
<element name="tdynarraytypeinfo.elesize">
<short>Size of a single element in the array</short>
</element>
<element name="tdynarraytypeinfo.eletype">
<short>Pointer to next dimension structure in case of a multidimensional array</short>
</element>
<element name="tdynarraytypeinfo.vartype">
<short>Type (variant type) of element in the array</short>
</element>
<element name="TError">
<short>Error type, used in variants.</short>
</element>
<element name="TFPCHeapStatus">
<short>Record describing the state of the default FPC heap manager.</short>
<descr>
<var>TFPCHeapStatus</var> describes the state of the FPC heap manager.
This is not equivalent to the <link id="THeapStatus"/> record defined
by Delphi, which contains information not meaningful for the FPC heap manager.
The heap status can be retrieved by the <link id="GetFPCHeapStatus"/> call.
</descr>
<seealso>
<link id="GetFPCHeapStatus"/>
<link id="GetHeapStatus"/>
<link id="THeapStatus"/>
</seealso>
</element>
<element name="TFPCHeapStatus.MaxHeapSize">
<short>Maximum allowed size for the heap, in bytes</short>
</element>
<element name="TFPCHeapStatus.MaxHeapUsed">
<short>Maximum used size for the heap, in bytes</short>
</element>
<element name="TFPCHeapStatus.CurrHeapSize">
<short>Current heap size, in bytes</short>
</element>
<element name="TFPCHeapStatus.CurrHeapUsed">
<short>Currently used heap size, in bytes</short>
</element>
<element name="TFPCHeapStatus.CurrHeapFree">
<short>Currently free memory on heap, in bytes</short>
</element>
<element name="TInterfacedClass">
<short>
<link id="#rtl.system.tobject">TObject</link> descendent implementing the <link id="#rtl.system.IInterface">IInterface</link> interface </short>
<descr>
<var>TInterfacedClass</var> is a descendent of
</descr>
<errors/>
<seealso/>
</element>
<element name="TInterfacedObject">
<short>
<link id="#rtl.system.tobject">TObject</link> descendent implementing the <link id="#rtl.system.IUnknown">IUnknown</link> interface </short>
<descr>
<var>TInterfacedObject</var> is a descendent of <link id="TObject"/> which implements the
<link id="IUnknown"/> interface. It can be used as a base class for all classes which need
reference counting.
</descr>
<seealso>
<link id="IUnknown"/>
<link id="TObject"/>
</seealso>
</element>
<element name="TInterfacedObject.AfterConstruction">
<short>Handle reference count properly.</short>
<descr>
<var>AfterConstruction</var> overrides the basic method in <var>TObject</var>
and adds some additional reference count handling.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TInterfacedObject.BeforeDestruction">BeforeDestruction</link>
</seealso>
</element>
<element name="TInterfacedObject.BeforeDestruction">
<short>Check reference count.</short>
<descr>
<var>AfterConstruction</var> overrides the basic method in <var>TObject</var>
and adds a reference count check: if the reference count is not zero, an error
occurs.
</descr>
<errors>A runtime-error 204 will be generated if the reference count is nonzero when
the object is destroyed.
</errors>
<seealso>
<link id="TInterfacedObject.AfterConstruction">AfterConstruction</link>
</seealso>
</element>
<element name="TInterfacedObject.NewInstance">
<short>Create a new instance</short>
<descr>
<var>NewInstance</var> initializes a new instance of <link id="TInterfacedObject"/>
</descr>
<errors>None.
</errors>
</element>
<element name="TInterfacedObject.RefCount">
<short>Return the current reference count</short>
<descr>
<var>RefCount</var> returns the current reference count.
This reference count cannot be manipulated, except through
the methods of <link id="IUnknown"/>. When it reaches zero,
the class instance is destroyed.
</descr>
<seealso>
<link id="IUnknown"/>
</seealso>
</element>
<element name="TObject.GetInterface">
<short>Return a reference to an interface</short>
<descr>
<p>
<var>GetInterface</var> scans the interface tables and returns a reference
to the interface <var>iid</var>. The reference is stored in <var>Obj</var>
which should be an interface reference. It returns <var>True</var> if the
interface was found, <var>False</var> if not.
</p>
<p>The reference count of the interface is increased by this call.
</p>
</descr>
<errors>If no interface was found, <var>False</var> is returned.
</errors>
<seealso>
<link id="TObject.GetInterfaceByStr">GetInterfaceByStr</link>
</seealso>
</element>
<element name="TObject.GetInterfaceByStr">
<short>Return an interface based on its GUID</short>
<descr>
<p>
<var>GetInterfaceByStr</var> returns in <var>obj</var> a pointer to the interface
identified by <var>iidstr</var>. The function returns <var>True</var> if the
interface is indeed implemented by the class, or <var>False</var> otherwise.
</p>
<p>The <var>iidstr</var> is the unique GUID by which the interface was declared.
</p>
</descr>
<errors>The function returns false if the requested interface is not implemented.
</errors>
<seealso>
<link id="TObject.GetInterfaceEntry"/>
<link id="TObject.GetInterfaceEntryByStr"/>
</seealso>
</element>
<element name="TObject.GetInterfaceEntry">
<short>Return the interface table entry by GUID</short>
<descr>
<var>GetInterfaceEntry</var> returns the internal interface table entry for the
interface identified by <var>iid</var> (the GUID used in the declaration
of the interface). If the interface is not implemented by the
class, the function returns <var>Nil</var>.
</descr>
<seealso>
<link id="TObject.GetInterfaceByStr"/>
<link id="TObject.GetInterfaceEntryByStr"/>
</seealso>
</element>
<element name="TObject.GetInterfaceEntryByStr">
<short>Return the interface table entry by string</short>
<descr>
<var>GetInterfaceEntryByStr</var> returns the internal interface table entry for the
interface identified by <var>iidstr</var> (A string representation of the GUID used in the declaration
of the interface). If the interface is not implemented by the
class, the function returns <var>Nil</var>.
</descr>
<seealso>
<link id="TObject.GetInterfaceByStr"/>
<link id="TObject.GetInterfaceEntry"/>
</seealso>
</element>
<element name="TObject.GetInterfaceTable">
<short>Return a pointer to the table of implemented interfaces for a class</short>
<descr>
<var>GetInterfaceTable</var> returns a pointer to the internal table of
implemented interfaces for a class. The result will always point to a valid
address, if the class implements no interfaces the <var>EntryCount</var>
field of the interface table will be zero.
</descr>
<seealso>
<link id="TObject.GetInterfaceByStr"/>
<link id="TObject.GetInterfaceEntry"/>
</seealso>
</element>
<element name="TResourceHandle">
<short>Handle to a resource, for use in the resource loading routines</short>
<descr>This is an opaque type.
</descr>
<seealso>
<link id="LoadResource"/>
</seealso>
</element>
<element name="TRuntimeError">
<short>Type of runtime-error for the Error procedure</short>
<descr>
<var>TRuntimeError</var> is used in the <link id="Error"/> procedure to
indicate what kind of error should be reported.
</descr>
<seealso>
<link id="Error"/>
</seealso>
</element>
<element name="TRuntimeError.reAccessViolation">
<short>Access Violation</short>
</element>
<element name="TRuntimeError.reAssertionFailed">
<short>Assertion failed error</short>
</element>
<element name="TRuntimeError.reCodesetConversion">
<short>Code set conversion error</short>
</element>
<element name="TRuntimeError.reControlBreak">
<short>User pressed CTRL-C</short>
</element>
<element name="TRuntimeError.reDivByZero">
<short>Division by zero error</short>
</element>
<element name="TRuntimeError.reExternalException">
<short>An external exception occurred</short>
</element>
<element name="TRuntimeError.reIntfCastError">
<short>Interface typecast error</short>
</element>
<element name="TRuntimeError.reIntOverflow">
<short>Integer overflow error</short>
</element>
<element name="TRuntimeError.reInvalidCast">
<short>Invalid (class) typecast error</short>
</element>
<element name="TRuntimeError.reInvalidOp">
<short>Invalid operation error</short>
</element>
<element name="TRuntimeError.reInvalidPtr">
<short>Invalid pointer error</short>
</element>
<element name="TRuntimeError.reNone">
<short>No error</short>
</element>
<element name="TRuntimeError.reOutOfMemory">
<short>Out of memory error</short>
</element>
<element name="TRuntimeError.reOverflow">
<short>Overflow error</short>
</element>
<element name="TRuntimeError.rePrivInstruction">
<short>Privileged instruction error</short>
</element>
<element name="TRuntimeError.reQuit">
<short>Quit signal error</short>
</element>
<element name="TRuntimeError.reRangeError">
<short>Range check error</short>
</element>
<element name="TRuntimeError.reSafeCallError">
<short>Safecall (IDispInterface) error</short>
</element>
<element name="TRuntimeError.reStackOverflow">
<short>Stack overflow error</short>
</element>
<element name="TRuntimeError.reUnderflow">
<short>Underflow error</short>
</element>
<element name="TRuntimeError.reVarArrayBounds">
<short>Variant array bounds error</short>
</element>
<element name="TRuntimeError.reVarArrayCreate">
<short>Variant array creation error</short>
</element>
<element name="TRuntimeError.reVarDispatch">
<short>Variant Dispatch error.</short>
</element>
<element name="TRuntimeError.reVarInvalidOp">
<short>Invalid variant operation error</short>
</element>
<element name="TRuntimeError.reVarNotArray">
<short>Variant is not an array error.</short>
</element>
<element name="TRuntimeError.reVarTypeCast">
<short>Invalid typecase from variant</short>
</element>
<element name="TRuntimeError.reZeroDivide">
<short>Division by zero error</short>
</element>
<element name="TSafeCallErrorProc">
<short>Prototype for the safecall error handler</short>
<descr>Prototype of a safecall error handler routine. <var>Error</var> is the error
number (passed by the Windows operating system) and <var>Addr</var> is the
address where the error occurred.
</descr>
<seealso>
<link id="SafeCallErrorProc"/>
</seealso>
</element>
<element name="TSafeCallErrorProc.error">
<short>Error number</short>
</element>
<element name="TSafeCallErrorProc.addr">
<short>Address where error occurred</short>
</element>
<element name="UCS4StringToWideString">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="UnicodeToUtf8">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="UTF8Decode">
<short>Convert a widestring to a UTF-8 encoded unicode string</short>
<descr>
<p>
<var>UTF8Decode</var> converts the widestring <var>S</var> to a UTF-8
encoded unicode string and returns the resulting string. It calls the
low-level <link id="Utf8ToUnicode"/> function to do the actual work.
</p>
<p>For this function to work, a widestring manager must be installed.
</p>
</descr>
<seealso>
<link id="UTF8Encode"/>
<link id="Utf8ToAnsi"/>
<link id="SetWideStringManager"/>
<link id="Utf8ToUnicode"/>
</seealso>
</element>
<element name="UTF8Encode">
<short>Convert a UTF-8 encoded unicode string to a widestring</short>
<descr>
<p>
<var>UTF8Encode</var> converts the UTF-8 encoded unicode string S to a
widestring and returns the resulting string. It calls the
low-level <link id="UnicodeToUTF8"/> function to do the actual work.
</p>
<p>For this function to work, a widestring manager must be installed.
</p>
</descr>
<seealso>
<link id="UTF8Decode"/>
<link id="Utf8ToAnsi"/>
<link id="UnicodeToUtf8"/>
<link id="SetWideStringManager"/>
</seealso>
</element>
<element name="Utf8ToAnsi">
<short>Convert a UTF-8 encoded unicode string to an ansistring</short>
<descr>
<p>
<var>Utf8ToAnsi</var> converts an utf8-encode unicode string to an
ansistring. It converts the string to a widestring and then converts
the widestring to an ansistring.
</p>
<p>For this function to work, a widestring manager must be installed.
</p>
</descr>
<errors/>
<seealso>
<link id="UTF8Encode"/>
<link id="UTF8Decode"/>
<link id="SetWideStringManager"/>
</seealso>
</element>
<element name="Utf8ToUnicode">
<short>Convert a buffer with UTF-8 characters to widestring characters</short>
<descr>
<p>
<var>Utf8ToUnicode</var> converts the buffer in <var>Source</var> with a
length of <var>SourceBytes</var> or for a maximum length of
<var>MaxChars</var> (or <var>MaxDestChars</var>) widestring
characters to the buffer pointed to by <var>Dest</var>.
</p>
<p>The function returns the number of copied widestring characters.
</p>
<p>For this function to work, a widestring manager must be installed.
</p>
</descr>
<errors>On error, -1 is returned.
</errors>
<seealso>
<link id="UTF8Encode"/>
<link id="UTF8Decode"/>
<link id="Utf8ToAnsi"/>
<link id="SetWideStringManager"/>
</seealso>
</element>
<element name="VarCast">
<short>Cast a variant to a certain type</short>
<descr>
<var>VarCast</var> converts the variant in <var>Source</var> to the type
indicated in <var>VarType</var> and returns the result in <var>dest</var>.
The <var>VarType</var> must be one of the pre-defined <var>VarNNN</var> constants.
</descr>
<errors>If the conversion is not possible because the value cannot be correctly
casted, then a run-time error or an exception may occur.
</errors>
<seealso/>
</element>
<element name="varrecord">
<short>Record variant type</short>
</element>
<element name="WideCharLenToString">
<short>Convert a length-limited array of widechar to an ansistring</short>
<descr>
<var>WideCharLenToString</var> converts at most <var>Len</var> widecharacters from
the null-terminated widechar array <var>S</var> to an ansistring, and returns
the ansistring.
</descr>
<errors>No validity checking is performed on <var>S</var>.
Passing an invalid pointer may lead to access violations.
</errors>
<seealso>
<link id="StringToWideChar"/>
<link id="WideCharToString"/>
<link id="WideCharToStrVar"/>
<link id="WideCharLenToStrVar"/>
</seealso>
</element>
<element name="WideCharLenToStrVar">
<short>Convert a length-limited array of widechar to an ansistring</short>
<descr>
<var>WideCharLenToString</var> converts at most <var>Len</var> widecharacters from
the null-terminated widechar array <var>Src</var> to an ansistring, and returns
the ansistring in <var>Dest</var>.
</descr>
<errors>No validity checking is performed on <var>Src</var>.
Passing an invalid pointer may lead to access violations.
</errors>
<seealso>
<link id="StringToWideChar"/>
<link id="WideCharToString"/>
<link id="WideCharToStrVar"/>
<link id="WideCharLenToString"/>
</seealso>
</element>
<element name="WideCharToString">
<short>Convert a null-terminated array of widechar to an ansistring</short>
<descr>
<var>WideCharToString</var> converts the null-terminated widechar
array <var>S</var> to an ansistring, and returns the ansistring.
</descr>
<errors>No validity checking is performed on <var>Src</var>.
Passing an invalid pointer, or an improperly terminated array may
lead to access violations.
</errors>
<seealso>
<link id="StringToWideChar"/>
<link id="WideCharToStrVar"/>
<link id="WideCharLenToStrVar"/>
<link id="WideCharLenToString"/>
</seealso>
</element>
<element name="WideCharToStrVar">
<short>Convert a null-terminated array of widechar to an ansistring</short>
<descr>
<var>WideCharToString</var> converts the null-terminated widechar
array <var>S</var> to an ansistring, and returns the ansistring in <var>Dest</var>.
</descr>
<errors>No validity checking is performed on <var>S</var>.
Passing an invalid pointer, or an improperly terminated array may
lead to access violations.
</errors>
<seealso>
<link id="StringToWideChar"/>
<link id="WideCharToString"/>
<link id="WideCharToStrVar"/>
<link id="WideCharLenToString"/>
</seealso>
</element>
<element name="widestringmanager">
<short>Current widestring manager.</short>
<descr>Contains the current widestring manager. Do not use directly.
</descr>
<seealso>
<link id="GetWideStringManager"/>
<link id="SetWideStringManager"/>
</seealso>
</element>
<element name="WideStringToUCS4String">
<short>Convert a widestring to a UCS-4 encoded string.</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator and(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(ansistring): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(ansistring): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Boolean): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Boolean): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Byte): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Byte): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Char): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Char): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(currency): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(currency): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator div(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(double): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(double): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(DWord): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(DWord): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Int64): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Int64): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(longbool): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(longbool): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(LongInt): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(LongInt): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator mod(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator not(variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): ansistring">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): Byte">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): Char">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): currency">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): double">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): DWord">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): Int64">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): longbool">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): LongInt">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): qword">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): ShortInt">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): shortstring">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): SmallInt">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): TDateTime">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): TError">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): widechar">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): widestring">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): Word">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(olevariant): wordbool">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator or(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(qword): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(qword): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(real48): double">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator shl(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(ShortInt): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(ShortInt): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(shortstring): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(shortstring): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator shr(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(SmallInt): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(SmallInt): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(TDateTime): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(TDateTime): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(TError): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(TError): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): ansistring">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): Byte">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): Char">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): currency">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): double">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): DWord">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): Int64">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): longbool">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): LongInt">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): qword">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): ShortInt">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): shortstring">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): SmallInt">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): TDateTime">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): TError">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator -(variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator &lt;=(variant, variant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator &lt;(variant, variant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator =(variant, variant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator &gt;=(variant, variant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator &gt;(variant, variant): Boolean">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator -(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator /(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator *(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator **(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator +(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): widechar">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): widestring">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): Word">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(variant): wordbool">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(widechar): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(widechar): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(widestring): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(widestring): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(wordbool): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(wordbool): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Word): olevariant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator :=(Word): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<element name="operator xor(variant, variant): variant">
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<!-- function Visibility: default -->
<element name="SwapEndian">
<short>Swap endianness of the argument</short>
<descr>
<var>SwapEndian</var> will swap the endianness of the bytes in its argument.
</descr>
<errors>None.
</errors>
<seealso>
<link id="hi"/>
<link id="lo"/>
<link id="swap"/>
<link id="BEToN"/>
<link id="NToBE"/>
<link id="NToLE"/>
<link id="LEToN"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="InterLockedIncrement">
<short>Thread-safe increment</short>
<descr>
<var>InterLockedIncrement</var> increments <var>Target</var> with 1 and returns the result.
This is done in a thread-safe way (i.e. only one processor is accessing the variable at a time).
</descr>
<errors>None.
</errors>
<seealso>
<link id="InterLockedDecrement"/>
<link id="InterLockedExchange"/>
<link id="InterLockedExchangeAdd"/>
<link id="InterlockedCompareExchange"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="InterLockedDecrement">
<short>Thread-safe decrement</short>
<descr>
<var>InterLockedDecrement</var> decrements <var>Target</var> with 1 and returns the result.
This is done in a thread-safe way. (i.e. only one processor is accessing the variable at a time).
</descr>
<errors>None.
</errors>
<seealso>
<link id="InterLockedIncrement"/>
<link id="InterLockedExchange"/>
<link id="InterLockedExchangeAdd"/>
<link id="InterlockedCompareExchange"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="InterLockedExchange">
<short>Exchange 2 integers in a thread-safe way</short>
<descr>
<var>InterLockedExchange</var> stores <var>Source</var> in <var>Target</var> and returns the old value of <var>Target</var>.
This is done in a thread-safe way, i.e., only one processor is accessing the <var>Target</var> variable at a time.
</descr>
<errors>None.
</errors>
<seealso>
<link id="InterLockedDecrement"/>
<link id="InterLockedIncrement"/>
<link id="InterLockedExchangeAdd"/>
<link id="InterlockedCompareExchange"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="InterLockedExchangeAdd">
<short>Thread-safe add and exchange of 2 values</short>
<descr>
<var>InterlockedDecrement</var> adds to <var>Target</var> the value of <var>Source</var> in a thread-safe way,
and returns the old value of <var>Target</var>.This is done in a thread-safe way, i.e., only one
processor is accessing the <var>Target</var> variable at a time.
</descr>
<errors>None.
</errors>
<seealso>
<link id="InterLockedDecrement"/>
<link id="InterLockedIncrement"/>
<link id="InterLockedExchange"/>
<link id="InterlockedCompareExchange"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="InterlockedCompareExchange">
<short>Conditional exchange</short>
<descr>
<var>InterlockedCompareExchange</var> does an compare-and-exchange operation on the specified values in a thread-safe way.
The function compares <var>Target</var> and <var>Comparand</var> and exchanges <var>Target</var> with <var>NewValue</var>
if <var>Target</var> and <var>Comparand</var> are equal. It returns the old value of <var>Target</var>.
This is done in a thread-safe way, i.e., only one processor is accessing the <var>Target</var> variable at a time.
</descr>
<errors>None.
</errors>
<seealso>
<link id="InterLockedDecrement"/>
<link id="InterLockedIncrement"/>
<link id="InterLockedExchange"/>
<link id="InterLockedExchangeAdd"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.Data1">
<short>First 4 bytes of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.Data2">
<short>Bytes 5 and 6 of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.Data3">
<short>Bytes 7 and 8 of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.Data4">
<short>Bytes 9-17 of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.D1">
<short>First 4 bytes of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.D2">
<short>Bytes 5 and 6 of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.D3">
<short>Bytes 7 and 8 of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.D4">
<short>Bytes 9-17 of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VInteger">
<short>Integer value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VBoolean">
<short>Boolean value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VChar">
<short>Character value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VWideChar">
<short>Widechar value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VExtended">
<short>Extended value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VString">
<short>String value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VPointer">
<short>Pointer value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VPChar">
<short>PChar value (null-terminated string)</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VObject">
<short>Object value (instance pointer)</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VClass">
<short>Class pointer value (VMT pointer)</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VPWideChar">
<short>Widechar value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VAnsiString">
<short>Ansistring value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VCurrency">
<short>Currency value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VVariant">
<short>Variant value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VInterface">
<short>Interface value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VWideString">
<short>Widestring value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VInt64">
<short>Int64 value</short>
</element>
<!-- variable Visibility: default -->
<element name="TVarRec.VQWord">
<short>QWord value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.res1">
<short>Reserved byte</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.res2">
<short>Reserved byte</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.res3">
<short>Reserved byte</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vsmallint">
<short>Smallint value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vinteger">
<short>Integer value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vsingle">
<short>Single value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vdouble">
<short>Double value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vcurrency">
<short>Currency value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vdate">
<short>TDateTime value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.volestr">
<short>OLE string value (specially allocated widestring)</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vdispatch">
<short>Dispatch interface value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.verror">
<short>Error value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vboolean">
<short>Boolean value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vunknown">
<short>IUnknown interface value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vshortint">
<short>Shortint value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vbyte">
<short>Byte value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vword">
<short>Word value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vlongword">
<short>Longword value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vint64">
<short>Int64 value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vqword">
<short>QWord value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vword64">
<short>QWord value (?)</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vstring">
<short>Ansistring value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vany">
<short>Any valyue</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.varray">
<short>Variant array value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vpointer">
<short>Pointer value</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vlongs">
<short>Value as an array of longints</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vwords">
<short>Value as an array of words</short>
</element>
<!-- variable Visibility: default -->
<element name="tvardata.vbytes">
<short>Value as an array of bytes</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.TotalAddrSpace">
<short>Total amount of available addressable memory</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.TotalUncommitted">
<short>Total amount of uncommitted memory</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.TotalCommitted">
<short>Total amount of committed memory</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.TotalAllocated">
<short>Total amount of allocated memory</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.TotalFree">
<short>Total amount of free memory</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.FreeSmall">
<short>Total amount of free small memory blocks</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.FreeBig">
<short>Total amount of free large memory blocks</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.Unused">
<short>Total amount of free process memory</short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.Overhead">
<short>Total bytes of overhead by memory manager </short>
</element>
<!-- variable Visibility: default -->
<element name="THeapStatus.HeapErrorCode">
<short>Last error code</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.GetFPCHeapStatus">
<short>Handler to get FPC heap status information.</short>
</element>
<!-- "type" alias type Visibility: default -->
<element name="Real">
<short>Alias for real type</short>
</element>
<!-- variable Visibility: default -->
<element name="TRTLCriticalSection.__m_reserved">
<short>Do not use.</short>
</element>
<!-- variable Visibility: default -->
<element name="TRTLCriticalSection.__m_count">
<short>Do not use.</short>
</element>
<!-- variable Visibility: default -->
<element name="TRTLCriticalSection.__m_owner">
<short>Do not use.</short>
</element>
<!-- variable Visibility: default -->
<element name="TRTLCriticalSection.__m_kind">
<short>Do not use</short>
</element>
<!-- variable Visibility: default -->
<element name="TRTLCriticalSection.__m_lock">
<short>Do not use</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_pack_x_y_z">
<short>FPC compiler internal procedure index: pack</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_unpack_x_y_z">
<short>FPC compiler internal procedure index: unpack</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_bitsizeof_x">
<short>FPC compiler internal procedure index: bitsizeof</short>
</element>
<!-- constant Visibility: default -->
<element name="float_flag_invalid">
<short>IEC/IEEE floating-point exception flag: Invalid operation error</short>
</element>
<!-- constant Visibility: default -->
<element name="float_flag_denormal">
<short>IEC/IEEE floating-point exception flag: ?</short>
</element>
<!-- constant Visibility: default -->
<element name="float_flag_divbyzero">
<short>IEC/IEEE floating-point exception flag: Division by zero error</short>
</element>
<!-- constant Visibility: default -->
<element name="float_flag_overflow">
<short>IEC/IEEE floating-point exception flag: Overflow error</short>
</element>
<!-- constant Visibility: default -->
<element name="float_flag_underflow">
<short>IEC/IEEE floating-point exception flag: Underflow error</short>
</element>
<!-- constant Visibility: default -->
<element name="float_flag_inexact">
<short>IEC/IEEE floating-point exception flag: ?</short>
</element>
<!-- variable Visibility: default -->
<element name="softfloat_exception_mask">
<short>Current soft float exception mask</short>
</element>
<!-- variable Visibility: default -->
<element name="softfloat_exception_flags">
<short>Current soft float exception flags</short>
</element>
<!-- procedure Visibility: default -->
<element name="float_raise">
<short>Raise floating point exception</short>
<descr>
<var>float_raise</var> raises the floating point exceptions specified by
<link id="softfloat_exception_flags"/>.
</descr>
<seealso>
<link id="softfloat_exception_flags"/>
<link id="softfloat_exception_mask"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="operator :=">
<short>Overload for variants</short>
<descr>The assignment operator is overloaded for various types. This should be
transparent to the user.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.time_low">
<short>low part of GUID timestamp</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.time_mid">
<short>Middle part of GUID timestamp</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.time_hi_and_version">
<short>High part of GUID timestamp and version</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.clock_seq_hi_and_reserved">
<short>High part of clock sequence of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.clock_seq_low">
<short>Low part of clock sequence of GUID</short>
</element>
<!-- variable Visibility: default -->
<element name="TGuid.node">
<short>Node part of GUID</short>
</element>
<!-- enumeration type Visibility: default -->
<element name="tinterfaceentrytype">
<short>Dispatch interface entry type</short>
<descr>This is an internal type for the compiler to encode calls to
dispatch interfaces.
</descr>
</element>
<!-- enumeration value Visibility: default -->
<element name="tinterfaceentrytype.etStandard">
<short>Standard entry</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tinterfaceentrytype.etVirtualMethodResult">
<short>Virtual method</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tinterfaceentrytype.etStaticMethodResult">
<short>Statis method</short>
</element>
<!-- enumeration value Visibility: default -->
<element name="tinterfaceentrytype.etFieldValue">
<short>Field value</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfaceentry.IType">
<short>Interface entry interface type</short>
</element>
<!-- variable Visibility: default -->
<element name="tinterfaceentry.__pad_dummy">
<short>Padding bytes</short>
</element>
<!--
********************************************************************
#rtl.System.TAggregatedObject
********************************************************************
-->
<!-- object Visibility: default -->
<element name="TAggregatedObject">
<short>Aggregated object</short>
<descr>
<p>
<var>TAggregatedObject</var> implements an object whose lifetime is
governed by an external object (or interface). It does not implement the
<var>IUnknown</var> interface by itself, but delegates all methods to the controller
object, as exposed in the <link id="TAggregatedObject.Controller">Controller</link>
property. In effect, the reference count of the aggregated object is the
same as that of it's controller, and additionally, all interfaces of the
controller are exposed by the aggregated object.
</p>
<p>Note that the aggregated object maintains a non-counted reference to
the controller.
</p>
<p>Aggregated objects should be used when using delegation to implement
reference counted objects: the delegated interfaces can be implemented
safely by <var>TAggregatedObject</var> descendents.
</p>
</descr>
<seealso>
<link id="TAggregatedObject.Create">Create</link>
<link id="TAggregatedObject.Controller">Controller</link>
</seealso>
</element>
<!-- constructor Visibility: public -->
<element name="TAggregatedObject.Create">
<short>Create a new instance of <var>TAggregatedObject</var>
</short>
<descr>
<var>Create</var> creates a new instance of <var>TAggregatedObject</var> on
the heap, and stores a reference to <var>aController</var>, so it can be
exposed in the <link id="TAggregatedObject.Controller">Controller</link>
property.
</descr>
<errors>If not enough memory is present on the heap, an exception will be raised.
If the <var>aController</var> is <var>Nil</var>, exceptions will occur when
any of the <var>TAggregatedObject</var> methods (actually, the <var>IUnknown</var>
methods)
are used.
</errors>
<seealso>
<link id="TAggregatedObject.Controller">Controller</link>
</seealso>
</element>
<!-- property Visibility: public -->
<element name="TAggregatedObject.Controller">
<short>Controlling instance</short>
<descr>
<p>
<var>Controller</var> exposes the controlling object, with all interfaces it
has.
</p>
<p>The value of the controller is set when the <var>TAggregatedObject</var>
instance is created.
</p>
</descr>
<seealso>
<link id="TAggregatedObject.Create"/>
</seealso>
</element>
<!-- function type Visibility: default -->
<element name="TSempahoreInitHandler">
<short>Function prototype for initializing a semaphore</short>
<descr>
<var>TSempahoreInitHandler</var> is the function prototype for initializing
a semaphore. It is used by the thread manager (<var>ThreadManager.SemaphoreInit</var>)
to create semaphores. The function should return a pointer, usable by the other
semaphore functions of the thread manager.
</descr>
</element>
<!-- procedure type Visibility: default -->
<element name="TSemaphoreDestroyHandler">
<short>Function prototype for destroying a semaphore</short>
<descr>
<var>TSemaphoreDestroyHandler</var> is the function prototype to
destroy an existing semaphore, as returned by
(<var>ThreadManager.SemaphoreInit</var>). It is used by the
thread manager (<var>ThreadManager.SemaphoreDestroy</var>)
</descr>
</element>
<!-- procedure type Visibility: default -->
<element name="TSemaphorePostHandler">
<short>Function prototype for posting an event to a semaphore</short>
<descr>
<var>TSemaphorePostHandler</var> is the function prototype to post an event
to the semaphore. It should handle a pointer as returned by the
<var>ThreadManager.SemaphoreInit</var> procedure. it's used by the thread
manager <var>ThreadManager.SemaphorePost</var>.
</descr>
</element>
<!-- procedure type Visibility: default -->
<element name="TSemaphoreWaitHandler">
<short>Function prototype to wait on a semaphore</short>
<descr>
<var>TSemaphoreWaitHandler</var> is the function prototype to wait on an
event on the semaphore (which should be posted to the semaphore with
<var>ThreadManager.SemaphorePost</var>). It should handle a pointer as eturned by the
<var>ThreadManager.SemaphoreInit</var> procedure. it's used by the thread
manager <var>ThreadManager.SemaphoreWait</var>.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.SemaphoreInit">
<short>Initialize (create) a new semaphore</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.SemaphoreDestroy">
<short>Destroy (free) a semaphore created using <var>SemaphoreInit</var>.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.SemaphorePost">
<short>Post an event on a semaphore created using <var>SemaphoreInit</var>.</short>
</element>
<!-- variable Visibility: default -->
<element name="TThreadManager.SemaphoreWait">
<short>Wait on a semaphore event posted by <var>SemaphorePost</var>.</short>
</element>
<!-- procedure Visibility: default -->
<element name="FlushThread">
<short>Flush all standard files</short>
<descr>
<var>FlushThread</var> flushes any buffers from standard file descriptors
such as standard input/output/error. It should normally not be called by
user code, but is executed when a thread exits.
</descr>
<seealso>
<link id="EndThread"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="UInt64">
<short>Unsigned 64-bit integer</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PPtrUInt">
<short>Pointer to unsigned integer of pointer size</short>
</element>
<!-- pointer type Visibility: default -->
<element name="PDateTime">
<short>Pointer to <var>TDatetime</var>
</short>
</element>
<!-- record type Visibility: default -->
<element name="TEntryInformation">
<short>Executable entry point information structure</short>
<descr>
<var>TEntryInformation</var> is used to initialize a Free Pascal program or
library. Under normal circumstances, there should be no need to use this
structure directly: it is used by the system unit and special linking units.
</descr>
</element>
<!-- variable Visibility: default -->
<element name="TEntryInformation.InitFinalTable">
<short>List of units to initialize/finalize</short>
</element>
<!-- variable Visibility: default -->
<element name="TEntryInformation.ThreadvarTablesTable">
<short>List of threadvar locations</short>
</element>
<!-- variable Visibility: default -->
<element name="TEntryInformation.asm_exit">
<short>Exit procedure</short>
</element>
<!-- variable Visibility: default -->
<element name="TEntryInformation.PascalMain">
<short>Main pascal code routine</short>
</element>
<!-- variable Visibility: default -->
<element name="TEntryInformation.valgrind_used">
<short>Determine if valgrind is used or not</short>
</element>
<!-- function type Visibility: default -->
<element name="TCtrlBreakHandler">
<short>CTRL-C Handler prototype </short>
<descr>
<var>TCtrlBreakHandler</var> is the prototype for the CTRL-C handler.
If <var>CtrlBreak</var> is <var>True</var> then Ctrl-Break was hit,
otherwise <var>CTRL-C</var> was hit. The handlers should return
<var>True</var> to signal that the key-combination was handled. If
<var>False</var> is returned, then default handling will be used,
which by default means an exception will be raised if the sysutils unit is
used.
</descr>
</element>
<!-- constant Visibility: default -->
<element name="ModuleIsLib">
<short>Determines whether the current module is a library</short>
<descr>
<var>ModuleIsLib</var> is set by the compiler when linking a library,
program or package, and determines whether the current module is a
library (or package) (<var>True</var>) or program (<var>False</var>).
</descr>
</element>
<!-- constant Visibility: default -->
<element name="ModuleIsPackage">
<short>Determines whether the current module is a package</short>
<descr>
<var>ModuleIsLib</var> is set by the compiler when linking a library,
program or package, and determines whether the current module is a
package (<var>True</var>) or a library or program (<var>False</var>).
</descr>
<seealso/>
</element>
<!-- constant Visibility: default -->
<element name="ModuleIsCpp">
<short>program compiled by CPP ?</short>
<descr>
<var>ModuleIsCpp</var> is always false for FPC programs, it is provided
for Delphi compatibility only.
</descr>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_writestr_x">
<short>Internal write string procedure</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_readstr_x">
<short>Internal read string procedure</short>
</element>
<!-- constant Visibility: default -->
<element name="fpc_in_abs_long">
<short>Internal ABS function</short>
</element>
<!-- procedure Visibility: default -->
<element name="ReadBarrier">
<short>Memory Read Barrier</short>
<descr>
<var>ReadBarrier</var> is a low-level instruction to force a read barrier
in the CPU: all memory reads before the instruction will be finished before
this instruction, before memory reads after the instruction occur.
</descr>
<seealso>
<link id="ReadDependencyBarrier"/>
<link id="ReadWriteBarrier"/>
<link id="WriteBarrier"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="ReadDependencyBarrier">
<short>Memory Read Dependency Barrier</short>
<descr>
<var>ReadDependencyBarrier</var> is a low-level instruction to force a read
barrier in the CPU: all memory reads (loads) depending on previous loads are
separate from the ones following the instruction.
</descr>
<seealso>
<link id="ReadBarrier"/>
<link id="ReadWriteBarrier"/>
<link id="WriteBarrier"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="ReadWriteBarrier">
<short>Memory read/write barrier</short>
<descr>
<var>ReadWriteBarrier</var> is a low-level instruction to force a read/write
barrier in the CPU: both read (Loads) and write (stores) operations before
and after the barrier are separate.
</descr>
<seealso>
<link id="ReadBarrier"/>
<link id="ReadDependencyBarrier"/>
<link id="WriteBarrier"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="WriteBarrier">
<short>Memory write barrier</short>
<descr>
<var>WriteBarrier</var> is a low-level instruction to force a write
barrier in the CPU: write (store) operations before and after the
barrier are separate.
</descr>
<seealso>
<link id="ReadBarrier"/>
<link id="ReadDependencyBarrier"/>
<link id="ReadWriteBarrier"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="ShortCompareText">
<short>Compare 2 shortstrings</short>
<descr>
<p>
<var>ShortCompareText</var> compares two shortstrings, <var>S1</var> and <var>S2</var>,
and returns the following
result:
</p>
<dl>
<dt>&lt;0</dt>
<dd>if <var>S1&lt;S2</var>.</dd>
<dt>0</dt>
<dd>if <var>S1=S2</var>.</dd>
<dt>&gt;0</dt>
<dd>if <var>S1&gt;S2</var>.</dd>
</dl>
<p>The comparision of the two strings is case-insensitive.
The function does not take internationalization settings into account, it
simply compares ASCII values.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="#rtl.sysutils.CompareText">CompareText</link>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TWideStringManager.ThreadInitProc">
<short>Called when a new thread is started.</short>
</element>
<!-- variable Visibility: default -->
<element name="TWideStringManager.ThreadFiniProc">
<short>Called when a thread has finished.</short>
</element>
<!-- procedure Visibility: default -->
<element name="DumpExceptionBackTrace">
<short>Create backtrace</short>
<descr>
<var>DumpExceptionBackTrace</var> writes a backtrace of the current
exception to the file <var>f</var>. If no exception is currently being
raised, nothing is written. As much frames as available are written.
If debug info is available, then file names and line numbers will be written
as well.
</descr>
<errors>No check is done to see whether <var>f</var> is opened for writing.
</errors>
<seealso>
<link id="dump_stack"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="SysInitFPU">
<short>Initialize the FPU</short>
<descr>
<var>SysInitFPU</var> initializes (resets) the floating point unit, if one is
available. It is called for instance when a new thread is started.
</descr>
<seealso>
<link id="BeginThread"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="SysSetCtrlBreakHandler">
<short>System CTRL-C handler</short>
<descr>
<var>SysSetCtrlBreakHandler</var> sets the CTRL-C handler to the
<var>Handler</var> callback, and returns the previous value of the handler.
</descr>
<seealso>
<link id="TCtrlBreakHandler"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="VarArrayPut">
<short>Put a value in a single cell of a variant array</short>
<descr>
<p>
<var>VarArrayPut</var> puts <var>Value</var> in the variant array
<var>A</var> at the location indicated by <var>Indices</var>. Thus the
statement
</p>
<pre>VarArrayPut(A,B,[2,1]);
</pre>
<p>is equivalent to
</p>
<pre>A[2,1]:=B;
</pre>
<p>The difference is that the previous is usable when the amount of indices
is not known at compile time.
</p>
</descr>
<errors>If the number of indices is wrong (or out of range) an exception may be
raised.
</errors>
<seealso>
<link id="VarArrayGet"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="VarArrayGet">
<short>Get a value from a single cell of a variant array</short>
<descr>
<p>
<var>VarArrayGet</var> returns the value in the variant array
<var>A</var> at the location indicated by <var>Indices</var>. Thus the
statement
</p>
<pre>B:=VarArrayGet(A,[2,1]);
</pre>
<p>is equivalent to
</p>
<pre>B:=A[2,1];
</pre>
<p>The difference is that the previous is usable when the amount of indices
is not known at compile time.
</p>
</descr>
<errors>If the number of indices is wrong (or out of range) an exception may be
raised.
</errors>
<seealso>
<link id="VarArrayPut"/>
</seealso>
<short/>
<descr/>
<errors/>
<seealso/>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.InitThread">
<short>Called when a thread is initialized</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.DoneThread">
<short>Called when a thread ends</short>
</element>
<!-- variable Visibility: default -->
<element name="TMemoryManager.RelocateHeap">
<short>Relocate the heap to a different location</short>
<descr/>
<seealso/>
</element>
<!-- procedure Visibility: default -->
<element name="DoneThread">
<short>End the current thread</short>
<descr>
<var>DoneThread</var> should be used to end the current thread. It performs
the necessary housekeeping before actually ending the thread. Using the
operating system calls to end the thread may result in data corruption
or memory leaks.
</descr>
<seealso>
<link id="BeginThread"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="AllFilesMask">
<short>File mask for all files on the current platform</short>
<descr>
<var>AllFilesMask</var> is the wildcard that can be used to return
all files in a directory. On windows and dos based systems, this will
be '*.*', while for unix systems, this will be '*'.
</descr>
<seealso>
<link id="LFNSupport"/>
<link id="DirectorySeparator"/>
<link id="DriveSeparator"/>
</seealso>
</element>
<!-- object Visibility: default -->
<element name="TContainedObject">
<short>Base class for contained objects</short>
<descr>
<var>TContainedObject</var> is the base class for contained objects, i.e.
objects that do not implement a reference counting mechanism themselves, but
are owned by some other object which handles the reference counting
mechanism. It implements the <var>IUnknown</var> interface and, more
specifically, the <var>QueryInterface</var> method of <var>IUnknown</var>.
</descr>
<seealso>
<link id="IInterface"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="ExtensionSeparator">
<short>Character which separates the filename from the file extension.</short>
<descr>
<var>ExtensionSeparator</var> is the character which separates the filename
from the file extension. On all current platforms, this is the <var>.</var>
(dot) character. All RTL filename handling routines use this constant.
</descr>
<seealso>
<link id="PathSeparator"/>
<link id="DriveSeparator"/>
<link id="AllowDirectorySeparators"/>
<link id="AllowDriveSeparators"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="AllowDirectorySeparators">
<short>Set of characters considered directory separators</short>
<descr>
<p>
<var>AllowDirectorySeparators</var> is the set of characters which are
considered directory separators by the RTL units. By default, this is set
to the most common directory separators: forward slash and backslash, so
routines will work in a cross-platform manner, no matter which character
was used:
</p>
<pre>AllowDirectorySeparators : set of char = ['\','/'];
</pre>
<p>If a more strict behaviour is desired, then <var>AllowDirectorySeparators</var>
can be set to the only character allowed on the current operating system, and
all RTL routines that handle filenames (splitting filenames, extracting
parts of the filename and so on) will use that character only.
</p>
</descr>
<seealso>
<link id="PathSeparator"/>
<link id="DriveSeparator"/>
<link id="ExtensionSeparator"/>
<link id="AllowDriveSeparators"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="AllowDriveSeparators">
<short>Set of characters considered drive separators</short>
<descr>
<var>AllowDriveSeparators</var> are the characters which are considered
to separate the drive part from the directory part in a filename. This
will be an empty set on systems that do not support drive letters. Other
systems (dos, windows and OS/2) will have the colon (:) character as the
only member of this set.
</descr>
<seealso>
<link id="PathSeparator"/>
<link id="DriveSeparator"/>
<link id="ExtensionSeparator"/>
<link id="AllowDirectorySeparators"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="UnicodeChar">
<short>Unicode string character</short>
<descr>
<var>UnicodeChar</var> is a single character from a UnicodeString. It equals
<var>WideChar</var> in all respects.
</descr>
<seealso>
<link id="WideChar"/>
<link id="UnicodeString"/>
</seealso>
</element>
<!-- pointer type Visibility: default -->
<element name="PUnicodeChar">
<short>Pointer to unicode character</short>
<descr>
<var>PUnicodeChar</var> is a pointer to a unicode character, just like
<var>PChar</var> is a pointer to a <var>Char</var> ansistring character.
</descr>
<seealso>
<link id="UnicodeChar"/>
<link id="WideChar"/>
<link id="UnicodeString"/>
</seealso>
</element>
<!-- pointer type Visibility: default -->
<element name="PUnicodeString">
<short>Pointer to unicodestring</short>
<descr>
<var>PUnicodeString</var> is a pointer to a <var>UnicodeString</var> string.
</descr>
<seealso>
<link id="UnicodeChar"/>
<link id="PUnicodeChar"/>
<link id="WideChar"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="__status" skip="1"/>
<element name="__spinlock" skip="1"/>
<element name="fpc_in_ror_x" skip="1"/>
<element name="fpc_in_ror_x_x" skip="1"/>
<element name="fpc_in_rol_x" skip="1"/>
<element name="fpc_in_rol_x_x" skip="1"/>
<element name="fpc_objc_selector_x" skip="1"/>
<element name="FillQWord">
<short>Fill memory range with QWord (64-bit) values</short>
<descr>
<var>FillQWord</var> fills the memory location of <var>x</var> with <var>Count</var>
times <var>value</var>. The size of the filled memory location is therefor
<var>8*count</var> bytes.
</descr>
<errors>No checks are made to see if X actually has a minimum size of <var>(Count*8)</var>
bytes. Therefor, other variables can be overwritten or the memory may be out
of the accessible memory for the program. In the latter case a run-error or
exception may be triggered.
</errors>
<seealso>
<link id="FillChar"/>
<link id="FillWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="IndexQWord">
<short>Return the position of a QWord in a memory range</short>
<descr>
<p>
<var>IndexQWord</var> checks the first <var>len</var> qwords starting at
<var>Buf</var>, and returns the position (zero-based) of <var>b</var>. If
<var>b</var> does not appear in the first <var>len</var> qwords, then
-1 is returned.
</p>
<p>Note that the search is done on QWord boundaries, but that the address of
<var>buf</var> need not be on a QWord boundary.
</p>
</descr>
<errors>No check is done to see whether the indicated memory range is valid. If it
is not, a run-error or exception may be triggered.
</errors>
<seealso>
<link id="IndexDWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RorByte">
<short>Rotate bits of a byte value to the right</short>
<descr>
<var>RorByte</var> rotates the bits of the byte <var>AValue</var> with <var>Dist</var>
positions to the right. If <var>Dist</var> is not specified, then 1 is assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RolByte"/>
<link id="RorWord"/>
<link id="RorDWord"/>
<link id="RorQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RolByte">
<short>Rotate bits of a byte value to the left</short>
<descr>
<var>RolByte</var> rotates the bits of the byte <var>AValue</var> with
<var>Dist</var> positions to the left. If <var>Dist</var> is not specified,
then 1 is assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RorByte"/>
<link id="RolWord"/>
<link id="RolDWord"/>
<link id="RolQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RorWord">
<short>Rotate bits of a word value to the right</short>
<descr>
<var>RorWord</var> rotates the bits of the word <var>AValue</var> with
<var>Dist</var> positions to the right. If <var>Dist</var> is not specified, then 1 is
assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RorByte"/>
<link id="RolWord"/>
<link id="RorDWord"/>
<link id="RorQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RolWord">
<short>Rotate bits of a word value to the left</short>
<descr>
<var>RolWord</var> rotates the bits of the word <var>AValue</var> with
<var>Dist</var> positions to the right. If <var>Dist</var> is not specified,
then 1 is assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RolByte"/>
<link id="RorWord"/>
<link id="RolDWord"/>
<link id="RolQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RorDWord">
<short>Rotate bits of a DWord (cardinal) value to the right</short>
<descr>
<var>RorDWord</var> rotates the bits of the DWord (cardinal) <var>AValue</var>
with <var>Dist</var> positions to the right. If <var>Dist</var> is not specified,
then 1 is
assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RorByte"/>
<link id="RolDWord"/>
<link id="RorWord"/>
<link id="RorQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RolDWord">
<short>Rotate bits of a DWord (cardinal) value to the left</short>
<descr>
<var>RolDWord</var> rotates the bits of the DWord (cardinal) <var>AValue</var> with
<var>Dist</var> positions to the left. If <var>Dist</var> is not specified,
then 1 is assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RolByte"/>
<link id="RolWord"/>
<link id="RorDWord"/>
<link id="RolQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RorQWord">
<short>Rotate bits of a QWord (64-bit) value to the right</short>
<descr>
<var>RorQWord</var> rotates the bits of the QWord (64-bit) <var>AValue</var>
with <var>Dist</var> positions to the right. If <var>Dist</var> is not specified,
then 1 is assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RorByte"/>
<link id="RorWord"/>
<link id="RorDWord"/>
<link id="RolQWord"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="RolQWord">
<short>Rotate bits of a QWord (64-bit) value to the left</short>
<descr>
<var>RorQWord</var> rotates the bits of the QWord (64-bit) <var>AValue</var>
with <var>Dist</var> positions to the left. If <var>Dist</var> is not
specified, then 1 is assumed.
</descr>
<errors>None.
</errors>
<seealso>
<link id="RolByte"/>
<link id="RolWord"/>
<link id="RolDWord"/>
<link id="RorQWord"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="float_round_nearest_even">
<short>Round to nearest even number</short>
</element>
<!-- constant Visibility: default -->
<element name="float_round_down">
<short>Round down</short>
</element>
<!-- constant Visibility: default -->
<element name="float_round_up">
<short>Round up</short>
</element>
<!-- constant Visibility: default -->
<element name="float_round_to_zero">
<short>Round in the direction of zero (down for positive, up for negative)</short>
</element>
<!-- variable Visibility: default -->
<element name="softfloat_rounding_mode">
<short>Rounding mode for softfloat</short>
<descr>
<p>
<var>softfloat_rounding_mode</var> determines how the software floating-point
emulation routines do the rounding. The value can be one of the following:
</p>
<dl>
<dt>float_round_nearest_even</dt>
<dd>
<printshort id="float_round_nearest_even"/>
</dd>
<dt>float_round_down</dt>
<dd>
<printshort id="float_round_down"/>
</dd>
<dt>float_round_up</dt>
<dd>
<printshort id="float_round_up"/>
</dd>
<dt>float_round_to_zero</dt>
<dd>
<printshort id="float_round_to_zero"/>
</dd>
</dl>
</descr>
<seealso/>
</element>
<!-- function Visibility: default -->
<element name="UnicodeCharToString">
<short>Convert unicode character to string</short>
<descr>
<p>
<var>UnicodeCharToString</var> converts a null-word-terminated array of unicode characters
in <var>S</var> to an AnsiString value. It simply calls <link id="UnicodeCharLenToString"/>
with the length of the string <var>S</var>.
</p>
<p>This function requires the use of a widestring manager.
</p>
</descr>
<errors>No checking is done to see if the pointer <var>S</var> is valid.
</errors>
<seealso>
<link id="StringToUnicodeChar"/>
<link id="UnicodeCharLenToString"/>
<link id="WidestringManager"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="StringToUnicodeChar">
<short>Convert an ansistring to a null-terminated array of unicode characters.</short>
<descr>
<p>
<var>StringToUnicodeChar</var> converts the ansistring <var>S</var> to a
unicodestring and places the result in <var>Dest</var>. The size of the
memory location pointed to by <var>Dest</var> must be given in
<var>DestSize</var>. If the result string is longer than the available size,
the result string will be truncated.
</p>
<p>The function always returns <var>Dest</var>.
</p>
</descr>
<errors>No check is performed to see whether <var>Dest</var> points to a valid
memory location.
</errors>
<seealso>
<link id="UnicodeCharToString"/>
<link id="UnicodeCharLenToString"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="UnicodeCharLenToString">
<short>Convert a memory buffer with unicode characters to an ansistring</short>
<descr>
<p>
<var>UnicodeCharLenToString</var> converts the unicode characters in buffer
<var>S</var> with at most <var>len</var> bytes length, to an ansistring and
returns the result.
</p>
<p>This function requires the use of a widestring manager.
</p>
</descr>
<errors>No checking is done to see if the pointer <var>S</var> or length <var>len</var> are valid.
</errors>
<seealso>
<link id="StringToUnicodeChar"/>
<link id="UnicodeCharToString"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="UnicodeCharLenToStrVar">
<short>Convert a memory buffer with unicode characters to an ansistring</short>
<descr>
<p>
<var>UnicodeCharLenToString</var> converts the unicode characters in buffer
<var>S</var> with at most <var>len</var> bytes length, to an ansistring and
returns the result in <var>Dest</var>
</p>
<p>This function does the same as <link id="UnicodeCharLenToString"/>.
</p>
</descr>
<errors>No checking is done to see if the pointer <var>S</var> or length
<var>len</var> are valid.
</errors>
<seealso>
<link id="StringToUnicodeChar"/>
<link id="UnicodeCharToString"/>
<link id="UnicodeCharLenToString"/>
<link id="UnicodeCharToStrVar"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="UnicodeCharToStrVar">
<short>Convert a null-terminated memory buffer with unicode characters to an ansistring</short>
<descr>
<p>
<var>UnicodeCharLenToString</var> converts the unicode characters in buffer
<var>S</var> up to the first null word, to an ansistring and
returns the result in <var>Dest</var>
</p>
<p>This function does the same as <link id="UnicodeCharToString"/>.
</p>
</descr>
<errors>No checking is done to see if the pointer <var>S</var> is valid.
</errors>
<seealso>
<link id="StringToUnicodeChar"/>
<link id="UnicodeCharToString"/>
<link id="UnicodeCharLenToString"/>
<link id="UnicodeCharToString"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="DefaultUnicode2AnsiMove">
<short>Standard widestring manager callback</short>
<descr>
<var>DefaultUnicode2AnsiMove</var> is the standard callback used for the
widestring manager when a unicode string must be converted to an ansistring.
It replaces all words with value &lt; 256 with their value as ASCII code.
</descr>
<errors>None.
</errors>
<seealso>
<link id="WidestringManager"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="DefaultAnsi2UnicodeMove">
<short>Standard widestring manager callback</short>
<descr>
<var>DefaultAnsi2UnicodeMove</var> is the standard callback used for the
widestring manager when an ansistring must be converted to a unicodestring.
It simply copies over all characters from the ansistring to the
unicodestring, no conversion whatsoever is performed.
</descr>
<errors/>
<seealso/>
</element>
<!-- record type Visibility: default -->
<element name="TUnicodeStringManager">
<short>Unicode string manager</short>
<descr>
<p>
<var>TUnicodeStringManager</var> is currently the same as the <link id="TUnicodeStringManager"/> manager record. It performs the same functions:
converting unicode strings to ansistrings and vice-versa,
performing uppercase to lowercase transformations and comparing strings.
</p>
</descr>
<seealso>
<link id="TWideStringManager"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.Wide2AnsiMoveProc">
<short>Callback used when a unicode/wide string must be converted to an ansistring</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.Ansi2WideMoveProc">
<short>Callback used when an ansistring must be converted to a unicodestring/widestring.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.UpperWideStringProc">
<short>Callback used when a unicode/wide string must be uppercased.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.LowerWideStringProc">
<short>Callback used when a unicode/wide string must be lowercased.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CompareWideStringProc">
<short>Callback used when 2 unicode/wide strings must be compared</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CompareTextWideStringProc">
<short>Callback used when 2 unicode/wide strings must be compared case-insensitively</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CharLengthPCharProc">
<short>Callback used when the character length of a unicode/wide string must be calculated</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.UpperAnsiStringProc">
<short>Callback used when an ansistring must be uppercased.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.LowerAnsiStringProc">
<short>Callback used when an ansistring must be lowercased.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CompareStrAnsiStringProc">
<short>Callback used when 2 ansistrings must be compared.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CompareTextAnsiStringProc">
<short>Callback used when 2 ansistrings must be compared case insensitively.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.StrCompAnsiStringProc">
<short>Callback used when 2 ansistrings must be compared case insensitively</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.StrICompAnsiStringProc">
<short>Callback used when 2 null-terminated ansistring arrays must be compared case insensitively</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.StrLCompAnsiStringProc">
<short>Callback used when 2 ansistring arrays must be compared up to a given length</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.StrLICompAnsiStringProc">
<short>Callback used when 2 ansistring arrays must be compared case insensitively up to agiven length</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.StrLowerAnsiStringProc">
<short>Callback used when a null-terminated ansistring array must be lowercased.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.StrUpperAnsiStringProc">
<short>Callback used when a null-terminated ansistring array must be uppercased.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.ThreadInitProc">
<short>Called whenever a new thread is started.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.ThreadFiniProc">
<short>Called whenever a thread ends.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.Unicode2AnsiMoveProc">
<short>Callback used whenever a unicode string must be converted to an ansistring.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.Ansi2UnicodeMoveProc">
<short>Callback used whenever a ansistring must be converted to a unicode string.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.UpperUnicodeStringProc">
<short>Callback used to convert a unicode string to uppercase.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.LowerUnicodeStringProc">
<short>Callback used to convert a unicode string to lowercase.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CompareUnicodeStringProc">
<short>Callback used to compare 2 unicode strings.</short>
</element>
<!-- variable Visibility: default -->
<element name="TUnicodeStringManager.CompareTextUnicodeStringProc">
<short>Callback used to compare 2 unicode strings case insensitively</short>
</element>
<!-- function Visibility: default -->
<element name="UnicodeStringToUCS4String">
<short>Convert a unicode string to a UCS-4 string.</short>
<descr>
<p>
<var>UnicodeStringToUCS4String</var> converts a unicode string <var>S</var> to a UCS-4
encoded string, and returns the resulting string.
</p>
<p>This function requires the widestring manager.
</p>
</descr>
<seealso>
<link id="UCS4StringToUnicodeString"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="UCS4StringToUnicodeString">
<short>Convert a UCS-4 encoded string to a unicode string</short>
<descr>
<p>
<var>UCS4StringToUnicodeString</var> converts the UCS-4 encoded string
<var>S</var> to a unicode string and returns the resulting string.
</p>
<p>This function requires the widestring manager.
</p>
</descr>
<errors/>
<seealso>
<link id="UnicodeStringToUCS4String"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="GetUnicodeStringManager">
<short>Return a copy of the currently active unicodetring manager.</short>
<descr>
<p>
<var>GetUnicodeStringManager</var> returns a copy of the currently active
unicode string manager in <var>Old</var>
</p>
<p>UnicodeStrings are implemented in different ways on different platforms.
Therefore, the Free Pascal Runtime library has no fixed implementation of
widestring routines. Instead, it defines a UnicodeStringManager record,
with callbacks that can be set to an implementation which is most
efficient on the current platform. On windows, standard Windows
routines will be used. On Unix and Linux, an implementation based on the
C library is available (in unit <file>cwstring</file>).
</p>
<p>It is possible to implement a custom unicodestring manager, optimized for
the current application, without having to recompile the complete Run-Time Library.
</p>
</descr>
<seealso>
<link id="SetUnicodeStringManager"/>
<link id="TUnicodeStringManager"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="SetUnicodeStringManager">
<short>Set the unicodestring manager</short>
<descr>
<p>
<var>SetUnicodeStringManager</var> sets the current unicodestring manager to <var>New</var>.
Optionally, it returns the currently active widestring manager in <var>Old</var>.
</p>
<p>UnicodeStrings are implemented in different ways on different platforms.
Therefore, the Free Pascal Runtime library has no fixed implementation of
widestring routines. Instead, it defines a UnicodeString manager record,
with callbacks that can be set to an implementation which is most
efficient on the current platform. On windows, standard Windows
routines will be used. On Unix and Linux, an implementation based on the
C library is available (in unit <file>cwstring</file>).
</p>
<p>It is possible to implement a custom unicodestring manager, optimized for
the current application, without having to recompile the complete Run-Time Library.
</p>
</descr>
<errors/>
<seealso>
<link id="TUnicodeStringManager"/>
</seealso>
</element>
<!-- pointer type Visibility: default -->
<element name="PVmt">
<short>Pointer to <link id="#rtl.system.TVMT">TVMT</link> record </short>
</element>
<!-- record type Visibility: default -->
<element name="TVmt">
<short>Virtual method table layout</short>
<descr>
<var>TVMT</var> is a record describing the VMT of a class. It's various
fields represent the available information in the VMT, as far as it is
common to all classes.
</descr>
<seealso>
<link id="PVmt"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vInstanceSize">
<short>Class instance size</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vInstanceSize2">
<short>Duplicate of class instance size (should equal -vInstanceSize)</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vParent">
<short>Pointer to parent VMT</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vClassName">
<short>Pointer to shortstring with classname</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vDynamicTable">
<short>Pointer to table with dynamic methods.</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vMethodTable">
<short>Pointer to table with virtual methods.</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vFieldTable">
<short>Pointer to table with field information</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vTypeInfo">
<short>Pointer to class type info record.</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vInitTable">
<short>Pointer to initialization information</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vAutoTable">
<short>Pointer to Automation interfaces table</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vIntfTable">
<short>Pointer to interfaces table</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vMsgStrPtr">
<short>Pointer to string message dispatch table</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vDestroy">
<short>Pointer to destructor</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vNewInstance">
<short>Pointer to NewInstance method</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vFreeInstance">
<short>Pointer to FreeInstance method</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vSafeCallException">
<short>?</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vDefaultHandler">
<short>Pointer to default message handler</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vAfterConstruction">
<short>Pointer to afterconstruction method.</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vBeforeDestruction">
<short>Pointer to beforeconstruction method.</short>
</element>
<!-- variable Visibility: default -->
<element name="TVmt.vDefaultHandlerStr">
<short>Pointer to default string message handler</short>
</element>
<!-- alias type Visibility: default -->
<element name="PInterface">
<short>Pointer to <link id="#rtl.system.IInterface">IInterface</link> interface</short>
</element>
<!-- record type Visibility: default -->
<element name="_fpc_objc_sel_type" skip="1"/>
<!-- pointer type Visibility: default -->
<element name="SEL" skip="1"/>
<!-- alias type Visibility: default -->
<element name="TFPResourceHandle">
<short>Handle to resource</short>
<descr>
<var>TFPResourceHandle</var> represents a handle to a binary resource and is
used in the various resource calls. Its actual type and size may differ accross
platforms.
</descr>
<seealso>
<link id="TFPResourceHMODULE"/>
<link id="TFPResourceHGLOBAL"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="TFPResourceHMODULE">
<short>Handle to module containing resource</short>
<descr>
<var>TFPResourceHMODULE</var> represents a module (library, executable, other) in which
a resource is located. It is used in the various resource calls. It is an opaque type:
its actual type and size may differ accross platforms.
</descr>
<seealso>
<link id="TFPResourceHandle"/>
<link id="TFPResourceHGLOBAL"/>
</seealso>
</element>
<!-- alias type Visibility: default -->
<element name="TFPResourceHGLOBAL">
<short>TFPResourceHGLOBAL</short>
<descr>
<var>TFPResourceHGLOBAL</var> represents a handle to the global module
containing a resource. It is used in the various resource calls.
It is an opaque type: its actual type and size may differ accross platforms.
</descr>
<seealso>
<link id="TFPResourceHandle"/>
<link id="TFPResourceHMODULE"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="RT_ANICURSOR">
<short>Resource type: Animated cursor</short>
<descr>This constant can be used to specify a resource of type "animated cursor".
</descr>
<seealso>
<link id="RT_CURSOR"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="RT_ANIICON">
<short>Resource type: Animated icon</short>
<descr>This constant can be used to specify a resource of type "animated icon".
</descr>
<seealso>
<link id="RT_ICON"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="RT_HTML">
<short>Resource type: HTML data</short>
<descr>This constant can be used to specify a resource of type "HTML data".
</descr>
<seealso>
<link id="RT_MANIFEST"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="RT_MANIFEST">
<short>Resource type: manifest</short>
<descr>This constant can be used to specify a resource of type "Manifest".
</descr>
<seealso>
<link id="RT_HTML"/>
</seealso>
</element>
<!-- function type Visibility: default -->
<element name="EnumResTypeProc">
<short>Callback for resource type enumeration</short>
<descr>
<var>EnumResTypeProc</var> is used in the <link id="EnumResourceTypes"/>
call. It is called for all resources, and is passed the
<var>ModuleHandle</var>, <var>ResourceType</var> values for each
resource encountered. Additionally, the <var>lParam</var>
parameter from the <var>EnumResourceTypes</var> is passed unaltered.
</descr>
<seealso>
<link id="EnumResourceTypes"/>
<link id="EnumResNameProc"/>
<link id="EnumResLangProc"/>
</seealso>
</element>
<!-- function type Visibility: default -->
<element name="EnumResNameProc">
<short>Callback for resource name enumeration</short>
<descr>
<var>EnumResNameProc</var>s used in the <link id="EnumResourceNames"/> call.
It is called for all resources of the specified type, and is passed the <var>ModuleHandle</var>,
<var>ResourceType</var>, <var>ResourceName</var> values for each resource encountered. Additionally,
the <var>lParam</var> parameter from the <var>EnumResourceNames</var> is passed unaltered.
</descr>
<seealso>
<link id="EnumResourceNames"/>
</seealso>
</element>
<!-- function type Visibility: default -->
<element name="EnumResLangProc">
<short>Callback for language resource enumeration</short>
<descr>
<var>EnumResNameProc</var>s used in the <link id="EnumResourceLanguages"/> call.
It is called for all languages for a resource of the specified type and name,
and is passed the <var>ModuleHandle</var>,
<var>ResourceName</var> , <var>ResourceName</var> and <var>IDLanguage</var> values for each
language encountered for the specified resource. Additionally,
the <var>lParam</var> parameter from the <var>EnumResourceLanguages</var> is
passed unaltered.
</descr>
<seealso>
<link id="EnumResourceLanguages"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="Is_IntResource">
<short>Check whether a resource is an internal resource</short>
<descr>
<var>Is_IntResource</var> returns <var>True</var> if the resource type is
internal (system predefined) resource or false if it is a user-defined
resource type.
</descr>
<errors>None.
</errors>
</element>
<!-- function Visibility: default -->
<element name="MakeLangID">
<short>Create a langauge ID</short>
<descr>
<var>MakeLangID</var> creates a language ID from the <var>primary</var> and
<var>sub</var> language IDS.
</descr>
<seealso/>
</element>
<!-- function Visibility: default -->
<element name="EnumResourceTypes">
<short>Enumerate available resource types</short>
<descr>
<var>EnumResourceTypes</var> enumerates the types of all resources in the
module <var>ModuleHandle</var>. For each resource available it calls
<var>EnumFunc</var> and passes it <var>ModuleHandle</var>, the type of
the resource, and <var>lParam</var>. It returns <var>False</var> if no
resources are available for the specified module, or <var>True</var> if
there are resources available.
</descr>
<errors>None.
</errors>
<seealso>
<link id="EnumResourceNames"/>
<link id="EnumResourceLanguages"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="EnumResourceNames">
<short>Enumerate available resource names for a specified resource type</short>
<descr>
<var>EnumResourceNames</var> enumerates the names of all resources of type
<var>ResourceType</var> in the module <var>ModuleHandle</var>. For each
resource available it calls <var>EnumFunc</var> and passes it <var>ModuleHandle</var>, the type of
the resource <var>ResourceType</var>, the name of the resource, and <var>lParam</var>.
It returns <var>False</var> if no resources are available for the specified resource
type and module, or <var>True</var> if there are resources available.
</descr>
<errors>None.
</errors>
<seealso>
<link id="EnumResourceTypes"/>
<link id="EnumResourceLanguages"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="EnumResourceLanguages">
<short>Enumerate available languages for a resource of given type and name</short>
<descr>
<var>EnumResourceLanguages</var> enumerates the available languages for a
resource of given <var>ResourceName</var> and type <var>ResourceType</var>
in the module <var>ModuleHandle</var>.
For each language availanle, it calls <var>EnumFunc</var> and passes it
<var>ModuleHandle</var>, the type of the resource <var>ResourceType</var>, the name of the resource
<var>ResourceName</var>, the language ID, and <var>lParam</var>.
It returns <var>False</var> if no resources are available for the specified
resource type and module, or <var>True</var> if there are resources available.
</descr>
<errors>None.
</errors>
<seealso>
<link id="EnumResourceTypes"/>
<link id="EnumResourceNames"/>
<link id="EnumResourceLanguages"/>
</seealso>
</element>
<!-- function Visibility: default -->
<element name="FindResourceEx">
<short>Find a resource based on type, name, language</short>
<descr>
<p>
<var>FindResourceEx</var> looks in module <var>ModuleHandle</var> for a
resource of type <var>ResourceType</var> and name <var>ResourceName</var>
with languague ID <var>Language</var>. Both <var>Resourcename</var> and
<var>ResourceName</var> can be specified as a null-terminated array of
characters, or as an AnsiString.
</p>
<p>If the requested language/sublanguage is not found, then the search is
conducted</p>
<ol>
<li>with only primary language.</li>
<li>with the neutral language (<var>LANG_NEUTRAL</var>)</li>
<li>with the english language</li>
</ol>
<p>If none of these has returned a match, then the first available language is
returned.
</p>
<p>If a match is found, a handle to the resource is returned. If none is found,
an empty handle (nil or 0) is returned.
</p>
</descr>
<errors>None.
</errors>
</element>
<!-- record type Visibility: default -->
<element name="TResourceManager">
<short>Resource manager definition</short>
<descr>
<p>
<var>TResourceManager</var> is the record describing the resource manager.
Depending on the kind of resources (internal, external), another resource
managing handler is installed by the system. The resource manager record is
used by all resource handling functions to do the actual work: for each
function in the API, a handler function is available. People wishing to
implement their own resource manager, must implement all handler functions
in their implementation.
</p>
<p>As soon as resources are used, the compiler will install a resource manager,
depending on the platform, this may be an internal or an external resource
manager.
</p>
</descr>
<seealso>
<link id="GetResourceManager"/>
<link id="SetResourceManager"/>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.HINSTANCEFunc">
<short>Return the programs instance handle.</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.EnumResourceTypesFunc">
<short>Handler for <link id="#rtl.system.EnumResourceTypes">EnumResourceTypes</link>.</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.EnumResourceNamesFunc">
<short>Handler for <link id="#rtl.system.EnumResourceNames">EnumResourceNames</link>.</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.EnumResourceLanguagesFunc">
<short>Handler for <link id="#rtl.system.EnumResourceLanguages">EnumResourceLanguages</link>.</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.FindResourceFunc">
<short>Handler for <link id="#rtl.system.FindResource">FindResource</link>
</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.FindResourceExFunc">
<short>Handler for <link id="#rtl.system.FindResourceEx">FindResourceEx</link>
</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.LoadResourceFunc">
<short>Handler for <link id="#rtl.system.LoadResource">LoadResource</link>
</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.SizeofResourceFunc">
<short>Handler for <link id="#rtl.system.SizeOfResource">SizeOfResource</link>
</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.LockResourceFunc">
<short>Handler for <link id="#rtl.system.LockResource">LockResource</link>
</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.UnlockResourceFunc">
<short>Handler for <link id="#rtl.system.UnLockResource">UnLockResource</link>
</short>
</element>
<!-- variable Visibility: default -->
<element name="TResourceManager.FreeResourceFunc">
<short>Handler for <link id="#rtl.system.FreeResource">FreeResource</link>
</short>
</element>
<!-- procedure Visibility: default -->
<element name="GetResourceManager">
<short>Return the currently active resource manager</short>
<descr>
<var>GetResourceManager</var> returns the currently active resource manager record
in <var>Manager</var>. There is always an active resource manager record.
</descr>
<errors>None.
</errors>
<seealso>
<link id="TResourceManager"/>
<link id="SetResourceManager"/>
</seealso>
</element>
<!-- procedure Visibility: default -->
<element name="SetResourceManager">
<short>Set the resource manager</short>
<descr>
<p>
<var>SetResourceManager</var> sets the active resource manager to
<var>Manager</var>. After a call to <var>SetResourceManager</var>, the
functions in the <var>Manager</var> record will be used to handle resources.
</p>
<p>Note that it is not supported to change resource managers on-the-fly: any
resources or information about resources obtained should be discareded prior
to a call to <var>SetResourceManager</var>. Typically,
<var>SetResourceManager</var> should be called once, at program startup.
</p>
</descr>
<errors>None.
</errors>
<seealso>
<link id="TResourceManager"/>
<link id="GetResourceManager"/>
</seealso>
</element>
<!-- constant Visibility: default -->
<element name="UnixGetModuleByAddrHook">
<short>(Unix only) callback for <var>GetModuleByAddr</var>
</short>
<descr>
<var>UnixGetModuleByAddrHook</var> is used on unix systems to retrieve a
module name based on an address. It is used in the <link id="#rtl.exeinfo">exeinfo</link> unit to map addresses to module (programs
or library) names.
</descr>
<seealso>
<link id="#rtl.exeinfo">exeinfo</link>
</seealso>
</element>
<element name="WriteStr">
<short>Write variables to a string</short>
<descr>
<p>
<var>WriteStr</var> behaves like <link id="Write"/>, except that it stores
its output in the string variable <var>S</var> instead of a file.
Semantically, the <var>WriteStr</var> call is equivalent to writing the
arguments to a file using the <var>Write</var> call, and then reading them
into <var>S</var> using the <var>Read</var> call from the same file:
</p>
<code>var
F : Text;
begin
Rewrite(F);
Write(F,Args);
Close(F);
Reset(F);
Read(F,S);
Close(F);
end;
</code>
<p>Obviously, the <var>WriteStr</var> call does not use a temporary file.
</p>
<p>
<var>WriteStr</var> is defined in the ISO Extended Pascal standard.
More information on the allowed arguments and the possible formatting can be
found in the description of <link id="Write"/>.
</p>
</descr>
<seealso>
<link id="Write"/>
<link id="ReadStr"/>
<link id="Read"/>
</seealso>
</element>
<element name="ReadStr">
<short>Read variables from a string</short>
<descr>
<p>
<var>ReadStr</var> behaves like <link id="Read"/>, except that it reads
its input from the string variable <var>S</var> instead of a file.
Semantically, the <var>ReadStr</var> call is equivalent to writing the
string to a file using the <var>Write</var> call, and then reading them
into the various arguments <var>Arg</var> using the <var>Read</var> call
from the same file:
</p>
<code>var
F : Text;
begin
Rewrite(F);
Write(F,S);
Close(F);
Reset(F);
Read(F,Args);
Close(F);
end;
</code>
<p>Obviously, the <var>ReadStr</var> call does not use a temporary file.
</p>
<p>
<var>ReadStr</var> is defined in the ISO Extended Pascal standard.
More information on the allowed arguments and the behaviour of the arguments
can be found in the description of <link id="Read"/>.
</p>
</descr>
<seealso>
<link id="Read"/>
<link id="WriteStr"/>
<link id="Write"/>
</seealso>
</element>
<element name="pack">
<short>Create packed array from normal array</short>
<descr>
<p>
<var>Pack</var> will copy the elements of an unpacked array
(<var>A</var>) to a packed array (<var>Z</var>).
It will start the copy at the index denoted by <var>StartIndex</var>.
The type of the index variable <var>StartIndex</var> must match the type
of the index of <var>A</var>. The elements are always transferred to the
beginning of the packed array <var>Z</var>. (i.e. it starts at <var>Low(Z)</var>).
</p>
<p>Obviously, the type of the elements of the arrays <var>A</var> and <var>Z</var> must
match.
</p>
</descr>
<seealso>
<link id="unpack"/>
</seealso>
</element>
<element name="UnPack">
<short>Create unpacked array from packed array</short>
<descr>
<p>
<var>UnPack</var> will copy the elements of a packed array (<var>Z</var>)
to an unpacked array (<var>A</var>). All elements in <var>Z</var> are copied
to <var>A</var>, starting at index <var>StartIndex</var> in <var>A</var>.
The type of the index variable <var>StartIndex</var> must match
the type of the index of <var>A</var>.
</p>
<p>Obviously, the type of the elements of the arrays <var>A</var> and
<var>Z</var> must match.
</p>
</descr>
<seealso>
<link id="Pack"/>
</seealso>
</element>
</module>
</package>
</fpdoc-descriptions>