Sign in Join
Wiki copytemporary

Unit categorization: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Unit categorization

OldNewLine
1+**Unit categorization** of units provided in the [[Free Pascal]] [[RTL|Runtime Library]] is based on different criteria into several groups.
2+
3+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.
4+
5+## Procedural programming, short strings, cross-platform
6+
7+System
8+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)
9+
10+Strings
11+Operations with [[PChar]] strings (available in TP/BP)
12+
13+Matrix
14+Vector and matrix routines (FPC specific)
15+
16+UComplex
17+Operations with complex numbers (FPC specific)
18+
19+GetOpts
20+Routines for more advanced access to program parameters
21+
22+Keyboard
23+Low-level access to keyboard (FPC specific)
24+
25+Mouse
26+Mouse support (FPC specific)
27+
28+Video
29+Routines for low-level access to screen (FPC specific)
30+
31+Printer
32+Very basic access to printer (available in TP/BP)
33+
34+Sockets
35+Basic support for TCP/IP socket communication (FPC specific)
36+
37+CMem
38+Replacement memory manager based on C run-time library to allow easier integration with some code written in C (FPC specific)
39+
40+CTypes
41+Definition of C language types for easier integration with routines written in C (FPC specific)
42+
43+InitC
44+Some functions required for linking of some libraries written in C
45+
46+MacPas
47+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)
48+
49+HeapTrc
50+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)
51+
52+LineInfo
53+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)
54+
55+Crt
56+More advanced console (keyboard and screen) routines (TP/BP compatibility unit plus some FPC specific functions)
57+
58+Dos
59+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)
60+
61+Graph
62+Simple graphics support (TP/BP compatibility unit)
63+
64+## Procedural programming, ansistrings, cross-platform
65+
66+SysUtils
67+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)
68+
69+StrUtils
70+Various more advanced string routines (Delphi compatibility)
71+
72+DateUtils
73+Date/time handling routines (Delphi compatibility)
74+
75+ConvUtils
76+Conversion between different units of measurement (Delphi compatibility)
77+
78+SysConst
79+Resource texts for SysUtils (Delphi compatibility?)
80+
81+RTLConst
82+Resource texts for other RTL libraries (especially unit Classes)
83+
84+DynLibs
85+On-demand (run time) loading of dynamic libraries
86+
87+Math
88+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)
89+
90+FreeBIDI
91+Helper routines for bidirectional text output (FPC specific)
92+
93+Utf8BIDI
94+Helper routines for conversion of UTF-8 encoded text supporting bidirectional output (FPC specific)
95+
96+ObjPas
97+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)
98+
99+## TP/BP style OOP, shortstrings, cross-platform
100+
101+Objects
102+Base of the object hierarchy, disk I/O and memory operations for OOP programs - streams, resources, lists and collections (TP/BP compatibility)
103+
104+FV (Free Vision) units
105+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)
106+
107+## Delphi style OOP, ansistrings, cross-platform
108+
109+Classes
110+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)
111+
112+VarUtils
113+Variant support routines (Delphi compatibility?)
114+
115+FCL units
116+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]])
117+
118+## Procedural programming, shortstrings
119+
120+Ansistrings may be used/supported in some cases too, platform-specific.
121+
122+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.
123+
124+### Various units available for more than one platform
125+
126+Ports
127+Support of port access construct provided with TP/BP on x86 platforms
128+
129+CPU and MMX
130+Support of some low-level CPU-specific functions on x86 platforms
131+
132+UnixType, BaseUnix, Unix, UnixUtil, SysCall, IPC
133+Unix platforms (Linux, *BSD including Mac OS X, Solaris, NetwLibC, plus possibly BeOS and QNX again in the future)
134+
135+GPM
136+Unix platforms that support this library (Linux). It is less broadly supported than previous units.
137+
138+x86
139+Unix platforms running on x86
140+
141+Windows, WinMouse, WinEvent, WinSysUt, WinCrt (plus package WinUnits provided outside of RTL in "Packages")
142+MS Windows platforms (Win32, Win64, WinCE)
143+
144+WinSock
145+MS Windows, OS/2 and Netware
146+
147+### Linux specific units
148+
149+Linux
150+As the names implies, contains routines and symbols specific to Linux.
151+
152+Libc
153+is Linux/x86 only, see [[libc unit]] for more information
154+
155+### GO32v2 specific units
156+
157+Go32, Emu387, DpmiExcp, DxeType, DxeLoad
158+
159+### Classic Mac OS specific units
160+
161+MacOS, MacUtils
162+
163+### MorphOS specific units
164+
165+Exec, Timer, DosLib, Utility, Hardware, InputEvent, Graphics, Layers, Intuition, Clipboard, ASL, AHI and Get9
166+
167+### Netware specific units
168+
169+Netware, NWCalls, NWNit, NWPre, NWProt, NWServ, NWSNUt
170+
171+### OS/2 specific units
172+
173+OS2Def
174+Definition of common types and constants
175+
176+DosCalls
177+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)
178+
179+KbdCalls
180+Low-level access to keyboard (primarily for non-PM applications)
181+
182+MouCalls
183+Low-level mouse support (primarily for non-PM applications)
184+
185+VioCalls
186+Low-level video (screen) functions (non-PM)
187+
188+MonCalls
189+Support for character device monitors (non-PM applications)
190+
191+PMWin
192+Primary interface for GUI windowing functions provided by Presentation Manager (PM) environment
193+
194+PMGpi
195+Support for graphical operations (PM)
196+
197+PMStdDlg
198+Standard dialogs plus drag and drop support (PM)
199+
200+PMBitmap
201+Bitmap picture operations (PM)
202+
203+PMBidi
204+Support for bidirection text output (PM)
205+
206+PMHelp
207+Interface unit for help feature (PM)
208+
209+PMSpl
210+Access to printer spooler (PM)
211+
212+PMShl
213+Operations with desktop including access to system ini files (PM)
214+
215+PMWP
216+Operations with WorkPlace Shell classes (PM)
217+
218+PMWSock
219+Support for OS/2 socket library with interface modelled after Winsock 1.1
220+
221+PMDev
222+Support for different output devices and their capabilities (PM)
223+
224+(plus package OS2Units provided outside of RTL in "Packages")
225+
226+### (Free)BSD specific units
227+
228+Some of these may apply to other BSDs too.
229+
230+Console
231+general "syscons" header.
232+
233+sysctl
234+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)
235+
236+---
237+*From the Free Pascal wiki, page "Unit categorization", as it stood on 2018-08-23 after a change by Marcov, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
238+Category: RTL

Back to history