Unit Locale

From Ultibo.org
Revision as of 03:37, 25 November 2016 by Ultibo (Talk | contribs)

Jump to: navigation, search

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



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


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


Default locale constants LOCALE_*
LOCALE_SYSTEM_DEFAULT = $800;  
LOCALE_USER_DEFAULT = $400;  


String length maximum constants MAX_*
MAX_LEADBYTES = 12; 5 ranges, 2 bytes each, 0 terminated
MAX_DEFAULTCHAR = 2; single or double byte


Character type flag constants CT_*
CT_CTYPE1 = $00000001; ctype 1 information
CT_CTYPE2 = $00000002; ctype 2 information
CT_CTYPE3 = $00000004; ctype 3 information


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


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


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


Type definitions


To be documented

Public variables


To be documented

Function declarations



Initialization functions

procedure LocaleInit;
Description: To be documented
Note None documented


Locale functions

function IsValidCodePage(CodePage:UINT):BOOL;
Description: To be documented
Note None documented


function GetACP:UINT;
Description: To be documented
Note None documented


function GetOEMCP:UINT;
Description: To be documented
Note None documented


function SetACP(CodePage:UINT):BOOL;
Description: To be documented
Note None documented


function SetOEMCP(CodePage:UINT):BOOL;
Description: To be documented
Note None documented


function GetConsoleCP:UINT;
Description: To be documented
Note None documented


function SetConsoleCP(wCodePageID:UINT):BOOL;
Description: To be documented
Note None documented


function GetConsoleOutputCP:UINT;
Description: To be documented
Note None documented


function SetConsoleOutputCP(wCodePageID:UINT):BOOL;
Description: To be documented
Note None documented


function GetCPInfo(CodePage:UINT; var lpCPInfo:TCPInfo):BOOL;
Description: To be documented
Note None documented


function GetCPInfoEx(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
Description: To be documented
Note None documented


function GetCPInfoExA(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
Description: To be documented
Note None documented


function GetCPInfoExW(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXW):BOOL;
Description: To be documented
Note None documented


function IsValidLocale(Locale:LCID; dwFlags:DWORD):BOOL;
Description: To be documented
Note None documented


function GetSystemDefaultLCID:LCID;
Description: To be documented
Note None documented


function GetUserDefaultLCID:LCID;
Description: To be documented
Note None documented


function SetSystemDefaultLCID(Locale:LCID):BOOL;
Description: To be documented
Note None documented


RTL unicode string manager functions

function SysGetStandardCodePage(const stdcp:TStandardCodePageEnum):TSystemCodePage;
Description: To be documented
Note None documented


Locale helper functions

function MapPage(CodePage:UINT):Word;
Description: Map a default code page to the actual current page
Note None documented


function GetPage(PageID:Word):PCodePage;
Description: Find the requested page in the linked list
Note None documented


function CheckPage(Page:PCodePage):Boolean;
Description: Check that the Page supplied is part of the Linked list
Note None documented


function LinkPage(Page:PCodePage):Boolean;
Description: Link Page to Prev,Next Siblings and Adjust First/Last
Note None documented


function UnlinkPage(Page:PCodePage):Boolean;
Description: Unlink Page from Prev,Next Siblings and Adjust First/Last
Note None documented


function LoadPage(PageID:Word; Table:PCodeTable; Lower:PLowerTable; Upper:PUpperTable):Boolean;
Description: Load a code table and allocate memory to create a code page
Note None documented


function UnloadPage(PageID:Word; Page:PCodePage):Boolean;
Description: Unload a code page and release allocated memory
Note None documented


function DefaultTrans(PageID,TransID:Word):Boolean;
Description: To be documented
Note None documented


function InstallTrans(PageID:Word; Table:PTransTable):Boolean;
Description: To be documented
Note None documented


Return to Unit Reference