Unit categorization

From Lazarus wiki
Jump to navigationJump to search

Unit categorization of units provided in the Free Pascal Runtime Library is based on different criteria into several groups.

Criteria used below include different programming models (procedural, Turbo Pascal/Borland Pascal style OOP, Delphi style OOP), whether ansistrings (or more generally, reference counted types) are used or not (ansistrings are by default on with -Mdelphi/$MODE DELPHI or $H+), whether the units are cross-platform or platform specific units (with information about their availability/useability for different targets). Furthermore, basic information about type of functionality to be found in individual units should hopefully help especially new users to understand better where to search for particular routines. Finally, availability of individual units in other Pascal compilers (at least whether they are available with TP/BP, Delphi or whether they are FPC specific) are mentioned.

Procedural programming, short strings, cross-platform

System
Basic type definition, execution control, parameter processing, string handling, type conversions, mathematic operations, memory management, basic routines for console and disk I/O, constants and variables describing the particular platform and/or current environment (available in TP/BP and Delphi)
Strings
Operations with PChar strings (available in TP/BP)
Matrix
Vector and matrix routines (FPC specific)
UComplex
Operations with complex numbers (FPC specific)
GetOpts
Routines for more advanced access to program parameters
Keyboard
Low-level access to keyboard (FPC specific)
Mouse
Mouse support (FPC specific)
Video
Routines for low-level access to screen (FPC specific)
Printer
Very basic access to printer (available in TP/BP)
Sockets
Basic support for TCP/IP socket communication (FPC specific)
CMem
Replacement memory manager based on C run-time library to allow easier integration with some code written in C (FPC specific)
CTypes
Definition of C language types for easier integration with routines written in C (FPC specific)
InitC
Some functions required for linking of some libraries written in C
MacPas
Special unit supporting constructs formerly available in some Pascal compilers for Mac OS platform (ThinkPascal, Metrowerks etc.); available for all platforms with FPC to support -Mmacpas/$MODE MACPAS (FPC specific)
HeapTrc
Debugging support unit for tracing of incorrect memory allocation (more or less FPC specific, at least not available with TP/BP and probably Delphi either)
LineInfo
Debugging support unit to allow displaying of location (line) in source files in case of an error based on debug information linked to executable file (FPC specific)
Crt
More advanced console (keyboard and screen) routines (TP/BP compatibility unit plus some FPC specific functions)
Dos
More advanced disk I/O, execution flow (including running of other programs), date and time handling and access to environment variables, plus some compatibility routines only available/making sense for DOS platform (TP/BP compatibility unit plus some FPC specific functions; some of the functions were provided in WinDos unit in older Delphi versions)
Graph
Simple graphics support (TP/BP compatibility unit)

Procedural programming, ansistrings, cross-platform

SysUtils
More advanced disk I/O, execution control (including exception handling and running of other programs), access to environment variables, string routines (support of ansistrings and widestrings), conversion routines (strings, numbers, date/time), internationalization support (Delphi compatibility plus some FPC specific functions)
StrUtils
Various more advanced string routines (Delphi compatibility)
DateUtils
Date/time handling routines (Delphi compatibility)
ConvUtils
Conversion between different units of measurement (Delphi compatibility)
SysConst
Resource texts for SysUtils (Delphi compatibility?)
RTLConst
Resource texts for other RTL libraries (especially unit Classes)
DynLibs
On-demand (run time) loading of dynamic libraries
Math
More complex mathematic and statistic routines; no ansistrings really used here directly, although it loads unit SysUtils and thus installs its exception handler (Delphi compatibility with FPC specific additions)
FreeBIDI
Helper routines for bidirectional text output (FPC specific)
Utf8BIDI
Helper routines for conversion of UTF-8 encoded text supporting bidirectional output (FPC specific)
ObjPas
Basic support for -Mobjfpc and -Mdelphi including some type redefinitions and resource string support; unit used automatically for those modes, no need to add it manually (FPC specific, although the provided routines are compatible to routines available System unit with Delphi)

TP/BP style OOP, shortstrings, cross-platform

Objects
Base of the object hierarchy, disk I/O and memory operations for OOP programs - streams, resources, lists and collections (TP/BP compatibility)
FV (Free Vision) units
Complete framework for writing TP/BP-style OOP programs with text-mode windowing user interface (TP/BP compatibility - more or less compatible to Turbo Vision)

Delphi style OOP, ansistrings, cross-platform

Classes
Base of the class hierarchy, disk I/O, execution control and memory operations for OOP programs - streams, resources, lists, collections, threads, components, actions, interfaces, data modules etc. (Delphi compatibility)
VarUtils
Variant support routines (Delphi compatibility?)
FCL units
Non-visual classes for OOP programming (partly similar to Delphi VCL, but only non-visual parts are provided here; visual/GUI classes are provided with Lazarus)

Procedural programming, shortstrings

Ansistrings may be used/supported in some cases too, platform-specific.

This group is fairly extensive, only information about availability for individual platforms is given here. See the description of individual units for more information. In general, these units are FPC specific except for the Windows, WinCrt and WinSock units available with Delphi, and unit LibC available with Kylix.

Various units available for more than one platform

Ports
Support of port access construct provided with TP/BP on x86 platforms
CPU and MMX
Support of some low-level CPU-specific functions on x86 platforms
UnixType, BaseUnix, Unix, UnixUtil, SysCall, IPC
Unix platforms (Linux, *BSD including Mac OS X, Solaris, NetwLibC, plus possibly BeOS and QNX again in the future)
GPM
Unix platforms that support this library (Linux). It is less broadly supported than previous units.
x86
Unix platforms running on x86
Windows, WinMouse, WinEvent, WinSysUt, WinCrt (plus package WinUnits provided outside of RTL in "Packages")
MS Windows platforms (Win32, Win64, WinCE)
WinSock
MS Windows, OS/2 and Netware

Linux specific units

Linux
As the names implies, contains routines and symbols specific to Linux.
Libc
is Linux/x86 only, see libc_unit for more information

GO32v2 specific units

Go32, Emu387, DpmiExcp, DxeType, DxeLoad

Classic Mac OS specific units

MacOS, MacUtils

MorphOS specific units

Exec, Timer, DosLib, Utility, Hardware, InputEvent, Graphics, Layers, Intuition, Clipboard, ASL, AHI and Get9

Netware specific units

Netware, NWCalls, NWNit, NWPre, NWProt, NWServ, NWSNUt

OS/2 specific units

OS2Def
Definition of common types and constants
DosCalls
So-called "Control Program functions" - execution control (including running of other programs, threading, exceptions and error management, critical sections and semaphores), memory management, system and environment information (including environment variables, program and system parameters and national language support), disk I/O, date/time handling, inter-process communication (pipes), low-level system functions (IOCTL and communication with device drivers)
KbdCalls
Low-level access to keyboard (primarily for non-PM applications)
MouCalls
Low-level mouse support (primarily for non-PM applications)
VioCalls
Low-level video (screen) functions (non-PM)
MonCalls
Support for character device monitors (non-PM applications)
PMWin
Primary interface for GUI windowing functions provided by Presentation Manager (PM) environment
PMGpi
Support for graphical operations (PM)
PMStdDlg
Standard dialogs plus drag and drop support (PM)
PMBitmap
Bitmap picture operations (PM)
PMBidi
Support for bidirection text output (PM)
PMHelp
Interface unit for help feature (PM)
PMSpl
Access to printer spooler (PM)
PMShl
Operations with desktop including access to system ini files (PM)
PMWP
Operations with WorkPlace Shell classes (PM)
PMWSock
Support for OS/2 socket library with interface modelled after Winsock 1.1
PMDev
Support for different output devices and their capabilities (PM)

(plus package OS2Units provided outside of RTL in "Packages")

(Free)BSD specific units

Some of these may apply to other BSDs too.

Console
general "syscons" header.
sysctl
general sysctl header. Note that many other unices support sysctl, but the MIB names will probably be different on the detail level. (darwin also supports this one)