Return to Unit Reference
Description
This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL.
This unit provides compatible implementations of the following functions:
- ConvertDefaultLocale
- EnumCodePagesProc
- EnumLocalesProc
- EnumTimeFormats
- GetCPInfo
- GetNumberFormat
- GetSystemDefaultLangID
- GetUserDefaultLangID
- IsValidLocale
- GetConsoleOutputCP
- EnumCalendarInfo
- EnumDateFormats
- EnumSystemCodePages
- EnumTimeFormatsProc
- GetCurrencyFormat
- GetLocaleInfo
- GetSystemDefaultLCID
- GetUserDefaultLCID
- SetLocaleInfo
- SetConsoleCP
- EnumCalendarInfoProc
- EnumDateFormatsProc
- EnumSystemLocales
- GetACP
- GetDateFormat
- GetOEMCP
- GetTimeFormat
- IsValidCodePage
- GetConsoleCP
- SetConsoleOutputCP
The following functions are implemented by the Threads unit:
- GetThreadLocale (ThreadGetLocale) (GetThreadLocale is exposed in the Ultibo unit)
- SetThreadLocale (ThreadSetLocale) (SetThreadLocale is exposed in the Ultibo unit)
Most of the above are currently not implemented.
OEM Code Page defaults to 437 (OEM United States)
ANSI Code Page defaults to 1252 (ANSI Latin 1; Western European (Windows))
See also: https://msdn.microsoft.com/en-us/library/windows/desktop/dd319081%28v=vs.85%29.aspx
Constants
[Expand]
Default code page constants CP_*
Most of these are defined in System (see: \source\rtl\inc\systemh.inc)
|
|
CP_ACP = 0;
|
Default to ANSI code page
|
CP_OEMCP = ?;
|
Default to OEM code page
|
CP_MACCP = 2;
|
Default to MAC code page
|
CP_THREAD_ACP = 3;
|
Current thread's ANSI code page
|
CP_SYMBOL = 42;
|
SYMBOL translations
|
CP_UTF16 = 1200;
|
UTF-16 translation
|
CP_UNICODE = 1200;
|
Unicode translation
|
CP_UTF7 = 65000;
|
UTF-7 translation
|
CP_UTF8 = 65001;
|
UTF-8 translation
|
[Expand]
Code page identifier constants CP_OEM_*, CP_ANSI_*
See: https://en.wikipedia.org/wiki/Code_page)
|
|
CP_OEM_437 = 437;
|
US
|
CP_OEM_720 = 720;
|
Arabic
|
CP_OEM_737 = 737;
|
Greek
|
CP_OEM_775 = 775;
|
Baltic
|
CP_OEM_850 = 850;
|
Latin I
|
CP_OEM_852 = 852;
|
Latin II
|
CP_OEM_857 = 857;
|
Turkish
|
CP_OEM_862 = 862;
|
Hebrew
|
CP_OEM_866 = 866;
|
Russian
|
CP_OEM_874 = 874;
|
Thai
|
CP_OEM_1258 = ?258;
|
Vietnam
|
|
CP_ANSI_1250 = ?250;
|
Central Europe
|
CP_ANSI_1251 = ?251;
|
Cyrillic
|
CP_ANSI_1252 = ?252;
|
Latin I
|
CP_ANSI_1253 = ?253;
|
Greek
|
CP_ANSI_1254 = ?254;
|
Turkish
|
CP_ANSI_1255 = ?255;
|
Hebrew
|
CP_ANSI_1256 = ?256;
|
Arabic
|
CP_ANSI_1257 = ?257;
|
Baltic
|
CP_ANSI_1258 = ?258;
|
Vietnam
|
CP_ANSI_874 = 874;
|
Thai
|
[Expand]
Default locale constants LOCALE_*
LOCALE_SYSTEM_DEFAULT = $800;
|
|
LOCALE_USER_DEFAULT = $400;
|
|
[Expand]
String length maximum constants MAX_*
MAX_LEADBYTES = 12;
|
5 ranges, 2 bytes each, 0 terminated
|
MAX_DEFAULTCHAR = 2;
|
single or double byte
|
[Expand]
MBCS and Unicode translation flag constants MB_*, WC_*
MB_PRECOMPOSED = $00000001;
|
use precomposed chars
|
MB_COMPOSITE = $00000002;
|
use composite chars
|
MB_USEGLYPHCHARS = $00000004;
|
use glyph chars, not ctrl chars
|
MB_ERR_INVALID_CHARS = $00000008;
|
error for invalid chars
|
|
WC_COMPOSITECHECK = $00000200;
|
?onvert composite to precomposed
|
WC_DISCARDNS = $00000010;
|
discard non-spacing chars
|
WC_SEPCHARS = $00000020;
|
generate separate chars
|
WC_DEFAULTCHAR = $00000040;
|
replace w/ default AnsiChar
|
|
WC_NO_BEST_FIT_CHARS = $00000400;
|
do not use best fit chars
|
[Expand]
Character type flag constants CT_*
CT_CTYPE1 = $00000001;
|
ctype 1 information
|
CT_CTYPE2 = $00000002;
|
ctype 2 information
|
CT_CTYPE3 = $00000004;
|
ctype 3 information
|
[Expand]
CType 1 flag bit constants C1_*
C1_UPPER = $0001;
|
upper case
|
C1_LOWER = $0002;
|
lower case
|
C1_DIGIT = $0004;
|
decimal digits
|
C1_SPACE = $0008;
|
spacing characters
|
C1_PUNCT = $0010;
|
punctuation characters
|
C1_CNTRL = $0020;
|
control characters
|
C1_BLANK = $0040;
|
blank characters
|
C1_XDIGIT = $0080;
|
other digits
|
C1_ALPHA = $0100;
|
any linguistic character
|
C1_DEFINED = $0200;
|
defined character
|
[Expand]
CType 2 flag bit constants C2_*
C2_LEFTTORIGHT = $0001;
|
left to right
|
C2_RIGHTTOLEFT = $0002;
|
right to left
|
|
C2_EUROPENUMBER = $0003;
|
European number, digit
|
C2_EUROPESEPARATOR = $0004;
|
European numeric separator
|
C2_EUROPETERMINATOR = $0005;
|
European numeric terminator
|
C2_ARABICNUMBER = $0006;
|
Arabic number
|
C2_COMMONSEPARATOR = $0007;
|
common numeric separator
|
|
C2_BLOCKSEPARATOR = $0008;
|
block separator
|
C2_SEGMENTSEPARATOR = $0009;
|
segment separator
|
C2_WHITESPACE = $000A;
|
white space
|
C2_OTHERNEUTRAL = $000B;
|
other neutrals
|
|
C2_NOTAPPLICABLE = $0000;
|
no implicit directionality
|
[Expand]
CType 3 flag bit constants C3_*
C3_NONSPACING = $0001;
|
nonspacing character
|
C3_DIACRITIC = $0002;
|
diacritic mark
|
C3_VOWELMARK = $0004;
|
vowel mark
|
C3_SYMBOL = $0008;
|
symbols
|
|
C3_KATAKANA = $0010;
|
katakana character
|
C3_HIRAGANA = $0020;
|
hiragana character
|
C3_HALFWIDTH = $0040;
|
half width character
|
C3_FULLWIDTH = $0080;
|
full width character
|
C3_IDEOGRAPH = $0100;
|
ideographic character
|
C3_KASHIDA = $0200;
|
Arabic kashida character
|
C3_LEXICAL = $0400;
|
lexical character
|
|
C3_ALPHA = $8000;
|
any linguistic AnsiChar (C1_ALPHA)
|
|
C3_NOTAPPLICABLE = $0000;
|
ctype 3 is not applicable
|
[Expand]
String flag constants NORM_*
NORM_IGNORECASE = $00000001;
|
ignore case
|
NORM_IGNORENONSPACE = $00000002;
|
ignore nonspacing chars
|
NORM_IGNORESYMBOLS = $00000004;
|
ignore symbols
|
|
NORM_IGNOREKANATYPE = $00010000;
|
ignore kanatype
|
NORM_IGNOREWIDTH = $00020000;
|
ignore width
|
[Expand]
Locale independent mapping flag constants MAP_*
MAP_FOLDCZONE = $00000010;
|
fold compatibility zone chars
|
MAP_PRECOMPOSED = $00000020;
|
?onvert to precomposed chars
|
MAP_COMPOSITE = $00000040;
|
?onvert to composite chars
|
MAP_FOLDDIGITS = $00000080;
|
all digits to ASCII 0-9
|
|
MAP_EXPAND_LIGATURES = $00002000;
|
expand all ligatures
|
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
[Expand]
procedure LocaleInit;
Description: To be documented
Locale functions
[Expand]
function IsValidCodePage(CodePage:UINT):BOOL;
Description: To be documented
[Expand]
function GetACP:UINT;
Description: To be documented
[Expand]
function GetOEMCP:UINT;
Description: To be documented
[Expand]
function SetACP(CodePage:UINT):BOOL;
Description: To be documented
[Expand]
function SetOEMCP(CodePage:UINT):BOOL;
Description: To be documented
[Expand]
function GetConsoleCP:UINT;
Description: To be documented
[Expand]
function SetConsoleCP(wCodePageID:UINT):BOOL;
Description: To be documented
[Expand]
function GetConsoleOutputCP:UINT;
Description: To be documented
[Expand]
function SetConsoleOutputCP(wCodePageID:UINT):BOOL;
Description: To be documented
[Expand]
function GetCPInfo(CodePage:UINT; var lpCPInfo:TCPInfo):BOOL;
Description: To be documented
[Expand]
function GetCPInfoEx(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
Description: To be documented
[Expand]
function GetCPInfoExA(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
Description: To be documented
[Expand]
function GetCPInfoExW(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXW):BOOL;
Description: To be documented
[Expand]
function IsValidLocale(Locale:LCID; dwFlags:DWORD):BOOL;
Description: To be documented
[Expand]
function GetSystemDefaultLCID:LCID;
Description: To be documented
[Expand]
function GetUserDefaultLCID:LCID;
Description: To be documented
[Expand]
function SetSystemDefaultLCID(Locale:LCID):BOOL;
Description: To be documented
RTL unicode string manager functions
[Expand]
function SysGetStandardCodePage(const stdcp:TStandardCodePageEnum):TSystemCodePage;
Description: To be documented
Locale helper functions
[Expand]
function MapPage(CodePage:UINT):Word;
Description: Map a default code page to the actual current page
[Expand]
function GetPage(PageID:Word):PCodePage;
Description: Find the requested page in the linked list
[Expand]
function CheckPage(Page:PCodePage):Boolean;
Description: Check that the Page supplied is part of the Linked list
[Expand]
function LinkPage(Page:PCodePage):Boolean;
Description: Link Page to Prev,Next Siblings and Adjust First/Last
[Expand]
function UnlinkPage(Page:PCodePage):Boolean;
Description: Unlink Page from Prev,Next Siblings and Adjust First/Last
[Expand]
function LoadPage(PageID:Word; Table:PCodeTable; Lower:PLowerTable; Upper:PUpperTable):Boolean;
Description: Load a code table and allocate memory to create a code page
[Expand]
function UnloadPage(PageID:Word; Page:PCodePage):Boolean;
Description: Unload a code page and release allocated memory
[Expand]
function DefaultTrans(PageID,TransID:Word):Boolean;
Description: To be documented
[Expand]
function InstallTrans(PageID:Word; Table:PTransTable):Boolean;
Description: To be documented
Return to Unit Reference