diff --git a/uppsrc/$.tpp/Reference$en-us.tpp b/uppsrc/$.tpp/Reference$en-us.tpp index 00ac68e64..b5d41964a 100644 --- a/uppsrc/$.tpp/Reference$en-us.tpp +++ b/uppsrc/$.tpp/Reference$en-us.tpp @@ -10,6 +10,12 @@ topic "AIndex"; [i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam] [b42;2 $$9,9#13035079074754324216151401829390:normal] [{_} +[s0;*@7;4%% &] +[ {{10000@(113.42.0) [s0;%% [*@7;4 Title]]}}&] +[s0;i448;a25;kKO9;@(0.0.255) &] +[ {{10000F(128)G(128)@1 [s0;%% [* Function List]]}}&] [s0;i448;a25;kKO9;:noref:@(0.0.255) &] [ {{10000F(128)G(128)@1 [s0;%% [* Public Method List]]}}&] +[s0; &] +[ {{10000F(128)G(128)@1 [s0;%% [* Constructor detail]]}}&] [s0; ] \ No newline at end of file diff --git a/uppsrc/Core/CharSet.h b/uppsrc/Core/CharSet.h index 69509a869..0649f1045 100644 --- a/uppsrc/Core/CharSet.h +++ b/uppsrc/Core/CharSet.h @@ -169,9 +169,9 @@ inline bool IsCJKIdeograph(int c) { return c >= 0x2e80 && c <= 0xdfaf || c >= 0 word UnicodeCombine(word chr, word combine); -void ToUpper(wchar *t, const char *s, int len); -void ToLower(wchar *t, const char *s, int len); -void ToAscii(wchar *t, const char *s, int len); +void ToUpper(wchar *t, const wchar *s, int len); +void ToLower(wchar *t, const wchar *s, int len); +void ToAscii(wchar *t, const wchar *s, int len); void ToUpper(wchar *s, int len); void ToLower(wchar *s, int len); diff --git a/uppsrc/Core/src.tpp/CharSet$en-us.tpp b/uppsrc/Core/src.tpp/CharSet$en-us.tpp new file mode 100644 index 000000000..aab2d4120 --- /dev/null +++ b/uppsrc/Core/src.tpp/CharSet$en-us.tpp @@ -0,0 +1,680 @@ +topic ""; +[2 $$0,0#00000000000000000000000000000000:Default] +[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class] +[l288;2 $$2,0#27521748481378242620020725143825:desc] +[0 $$3,0#96390100711032703541132217272105:end] +[H6;0 $$4,0#05600065144404261032431302351956:begin] +[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item] +[l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement] +[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param] +[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam] +[b42;2 $$9,9#13035079074754324216151401829390:normal] +[{_} +[ {{10000@(113.42.0) [s0;%% [*@7;4 Character set support]]}}&] +[s0;i448;a25;kKO9;@(0.0.255) &] +[s0;%% While in ideal world every text resource would be encoded +in Unicode or UTF`-8, in practice we have to deal with many 8`-bit +encodings. U`+`+ has [^topic`:`/`/Core`/src`/CharSet`$en`-us`#AddCharSet`(const char`*`,const word`*`,byte`)^ e +xtensible] support for various encoding (charsets). It directly +defines following constants to express charset (names are self`-explanatory):&] +[s0; &] +[ {{3333:3333:3334f0;g0;^ [s0; [* CHARSET`_ISO8859`_1]&] +[s0; [* CHARSET`_ISO8859`_2]&] +[s0; [* CHARSET`_ISO8859`_3]&] +[s0; [* CHARSET`_ISO8859`_4]&] +[s0; [* CHARSET`_ISO8859`_5]&] +[s0; [* CHARSET`_ISO8859`_6]&] +[s0; [* CHARSET`_ISO8859`_7]&] +[s0; [* CHARSET`_ISO8859`_8]&] +[s0; [* CHARSET`_ISO8859`_9]] +:: [s0; [* CHARSET`_ISO8859`_10]&] +[s0; [* CHARSET`_ISO8859`_13]&] +[s0; [* CHARSET`_ISO8859`_14]&] +[s0; [* CHARSET`_ISO8859`_15]&] +[s0; [* CHARSET`_ISO8859`_16]&] +[s0; [* CHARSET`_WIN1250]&] +[s0; [* CHARSET`_WIN1251]&] +[s0; [* CHARSET`_WIN1252]&] +[s0; [* CHARSET`_WIN1253]] +:: [s0; [* CHARSET`_WIN1254]&] +[s0; [* CHARSET`_WIN1255]&] +[s0; [* CHARSET`_WIN1256]&] +[s0; [* CHARSET`_WIN1257]&] +[s0; [* CHARSET`_WIN1258]&] +[s0; [* CHARSET`_KOI8`_R]&] +[s0; [* CHARSET`_CP852]&] +[s0; [* CHARSET`_MJK]&] +[s0; [* CHARSET`_CP850]]}}&] +[s5;* &] +[s0; There are also some special charset values&] +[s0; &] +[s5;:CHARSET`_DEFAULT: [* CHARSET`_DEFAULT]&] +[s2;%% Represents `"default`" charset. Default charset can be set +using SetDefaultCharset and used instead `"real`" charset in +most charset`-related operations (and is usually used as default +value of parameter). Guaranteed to be equal to 0.&] +[s3; &] +[s4; &] +[s5;:CHARSET`_TOASCII: [* CHARSET`_TOASCII]&] +[s2;%% This charset, used in charset conversion&] +[s3; &] +[s4; &] +[s5;:CHARSET`_UTF8: [* CHARSET`_UTF8]&] +[s5;:CHARSET`_UNICODE: [* CHARSET`_UNICODE]&] +[s2;%% These are equal and mean UTF`-8 encoding.&] +[s3;%% &] +[s4; &] +[s5;:DEFAULTCHAR: [@(0.0.255) enum]_[* DEFAULTCHAR]_`=_[@3 0]x1f_&] +[s2;%% This special value is used as result of conversion in place +of characters that do not exist in target charset.&] +[s3; &] +[ {{10000F(128)G(128)@1 [s0;%% [* Function List]]}}&] +[s3;^byte^ &] +[s5;:GetDefaultCharset`(`): [_^byte^ byte]_[* GetDefaultCharset]()&] +[s2;%% Returns the current default charset.&] +[s3; &] +[s4; &] +[s5;:SetDefaultCharset`(byte`): [@(0.0.255) void]_[* SetDefaultCharset]([_^byte^ byte]_[*@3 c +harset])&] +[s2;%% Sets the default [%-*@3 charset].&] +[s3;%% &] +[s4; &] +[s5;:ResolveCharset`(byte`): [_^byte^ byte]_[* ResolveCharset]([_^byte^ byte]_[*@3 charset])&] +[s2;%% If [%-*@3 charset].is DEFAULT`_CHARSET, returns GetDefaultCharset(), +otherwise returns [%-*@3 charset].&] +[s3;%% &] +[s4; &] +[s5;:AddCharSet`(const char`*`,const word`*`,byte`): [_^byte^ byte]_[* AddCharSet]([@(0.0.255) c +onst]_[@(0.0.255) char]_`*[*@3 name], [@(0.0.255) const]_[_^word^ word]_`*[*@3 table], +[_^byte^ byte]_[*@3 systemcharset]_`=_CHARSET`_DEFAULT)&] +[s2;%% Adds a new charset named [%-*@3 name]. [%-*@3 table] must point +to 128 elements and contains UNICODE code`-points for character +values 128`-255. Character codes that are not defined in UNICODE +or in new charset should be set to CUNDEF. [%-*@3 systemcharset +]can contain equivalent `"typical`" charset of host platform +as optional auxiliary information. Returns a code for the new +charset. [%-*@3 table] must exist till the end of program (only +pointer to it is stored).&] +[s3;%% &] +[s4; &] +[s5;:AddCharSetE`(const char`*`,word`*`,byte`): [_^byte^ byte]_[* AddCharSetE]([@(0.0.255) c +onst]_[@(0.0.255) char]_`*[*@3 name], [_^word^ word]_`*[*@3 table], [_^byte^ byte]_[*@3 syste +mcharset]_`=_CHARSET`_DEFAULT)&] +[s2;%% This is similar to [^topic`:`/`/Core`/src`/CharSet`$en`-us`#AddCharSet`(const char`*`,const word`*`,byte`)^ A +ddCharSet], but any CUNDEF values in [%-*@3 table] are replaced +in characters in special private range 0xee00`-0xeeff. U`+`+ +uses this area as `"unicode error escape`", mapping there makes +possible to loss`-lessly convert to unicode and back even if +some characters do not have assigned code`-points. [%-*@3 table] +must exist till the end of program (only pointer to it is stored).&] +[s3;%% &] +[s4; &] +[s5;:CharsetName`(byte`): [@(0.0.255) const]_[@(0.0.255) char]_`*[* CharsetName]([_^byte^ byt +e]_[*@3 charset])&] +[s2;%% Returns the name of [%-*@3 charset ]code.&] +[s3;%% &] +[s4; &] +[s5;:CharsetCount`(`): [@(0.0.255) int]_[* CharsetCount]()&] +[s2;%% Returns the total count of charset (UTF`-8 excluded). It is +guaranteed that charset code numeric value for `"real`" charset +is in range 1...CharsetCount().&] +[s3; &] +[s4; &] +[s5;:CharsetByName`(const char`*`): [@(0.0.255) int]_[* CharsetByName]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 name])&] +[s2;%% Tries to find charset code by [%-*@3 name]. Comparison is case +insensitive and ignores any characters other that digits and +alphas. If charset is not identified, returns 0 (which is the +same as CHARSET`_DEFAULT).&] +[s3;%% &] +[s4; &] +[s5;:SystemCharset`(byte`): [_^byte^ byte]_[* SystemCharset]([_^byte^ byte]_[*@3 charset])&] +[s2;%% Attempt to retrieve host platform typical charset for [%-*@3 charset]. +If unsuccessful, returns 0.&] +[s3;%% &] +[s4; &] +[s5;:ToUnicode`(int`,byte`): [@(0.0.255) int]_[* ToUnicode]([@(0.0.255) int]_[*@3 chr], +[_^byte^ byte]_[*@3 charset])&] +[s2;%% Convert 8`-bit encoded character to unicode. [%-*@3 charset +]cannot be CHARSET`_UTF8.&] +[s3;%% &] +[s4; &] +[s5;:FromUnicode`(wchar`,byte`,int`): [@(0.0.255) int]_[* FromUnicode]([_^wchar^ wchar]_[*@3 w +chr], [_^byte^ byte]_[*@3 charset], [@(0.0.255) int]_[*@3 defchar]_`=_DEFAULTCHAR)&] +[s2;%% Converts unicode character to 8`-bit encoding. If codepoint +does not exist in given [%-*@3 charset], returns [%-*@3 defchar]. +[%-*@3 charset ]cannot be CHARSET`_UTF8.&] +[s3;%% &] +[s4; &] +[s5;:ToUnicode`(wchar`*`,const char`*`,int`,byte`): [@(0.0.255) void]_[* ToUnicode]([_^wchar^ w +char]_`*[*@3 ws], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 s], [@(0.0.255) int]_[*@3 n], +[_^byte^ byte]_[*@3 charset])&] +[s2;%% Converts an array of 8`-bit characters to UNICODE. Both arrays, +[%-*@3 ws] and [%-*@3 s], must have (at least) [%-*@3 n] elements. +[%-*@3 charset ]cannot be CHARSET`_UTF8.&] +[s3;%% &] +[s4; &] +[s5;:FromUnicode`(char`*`,const wchar`*`,int`,byte`,int`): [@(0.0.255) void]_[* FromUnico +de]([@(0.0.255) char]_`*[*@3 s], [@(0.0.255) const]_[_^wchar^ wchar]_`*[*@3 ws], +[@(0.0.255) int]_[*@3 n], [_^byte^ byte]_[*@3 charset], [@(0.0.255) int]_[*@3 defchar]_`=_DEF +AULTCHAR)&] +[s2;%% Converts an array of 8`-bit characters to UNICODE. Both arrays, +[%-*@3 ws] and [%-*@3 s], must have (at least) [%-*@3 n] elements. +[%-*@3 charset ]cannot be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ConvertCharset`(char`*`,byte`,const char`*`,byte`,int`): [@(0.0.255) void]_[* Conver +tCharset]([@(0.0.255) char]_`*[*@3 t], [_^byte^ byte]_[*@3 tcharset], +[@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 s], [_^byte^ byte]_[*@3 scharset], +[@(0.0.255) int]_[*@3 n])&] +[s2;%% Converts an array of 8`-bit characters [%-*@3 s] with encoding +[%-*@3 scharset] to another 8`-bit array with encoding [%-*@3 tcharset]. +Both arrays must have (at least) [%-*@3 n] elements. Neither [%-*@3 tcharset] +or[%-*@3 scharset ]can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:IsUtf8Lead`(int`): [@(0.0.255) bool]_[* IsUtf8Lead]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Tests whether [%-*@3 c ]is lead UTF`-8 byte.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUtf8`(wchar`): [_^String^ String]_[* ToUtf8]([_^wchar^ wchar]_[*@3 code])&] +[s2;%% Converts single unicode character to Utf8. Bytes from private +0xEExx range are converted to xx bytes.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUtf8`(const wchar`*`,int`): [_^String^ String]_[* ToUtf8]([@(0.0.255) const]_[_^wchar^ w +char]_`*[*@3 s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to UTF`-8. Bytes from private 0xEExx +range are converted to xx bytes.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUtf8`(const wchar`*`): [_^String^ String]_[* ToUtf8]([@(0.0.255) const]_[_^wchar^ wcha +r]_`*[*@3 s])&] +[s2;%% Converts zero`-terminated string [%-*@3 s] to UTF`-8. Bytes +from private 0xEExx range are converted to xx bytes.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUtf8`(const WString`&`): [_^String^ String]_[* ToUtf8]([@(0.0.255) const]_[_^WString^ W +String][@(0.0.255) `&]_[*@3 w])&] +[s2;%% Converts string to UTF`-8. Bytes from private 0xEExx range +are converted to xx bytes.&] +[s3;%% &] +[s4;%% &] +[s5;:FromUtf8`(const char`*`,int`): [_^WString^ WString]_[* FromUtf8]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 `_s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UTF`-8 to UNICODE string. Any wrong bytes and sequences +are converted to private 0xEExx range.&] +[s3;%% &] +[s4;%% &] +[s5;:FromUtf8`(const char`*`): [_^WString^ WString]_[* FromUtf8]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 `_s])&] +[s2;%% Converts zero`-terminted UTF`-8 string to UNICODE. Any wrong +bytes and sequences are converted to private 0xEExx range.&] +[s3;%% &] +[s4;%% &] +[s5;:FromUtf8`(const String`&`): [_^WString^ WString]_[* FromUtf8]([@(0.0.255) const]_[_^String^ S +tring][@(0.0.255) `&]_[*@3 s])&] +[s2;%% Converts UTF`-8 string to UNICODE. Any wrong bytes and sequences +are converted to private 0xEExx range.&] +[s3;%% &] +[s4;%% &] +[s5;:utf8check`(const char`*`,int`): [@(0.0.255) bool]_[* utf8check]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 `_s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Checks whether array contains a valid UTF`-8 sequence.&] +[s3;%% &] +[s4;%% &] +[s5;:utf8len`(const char`*`,int`): [@(0.0.255) int]_[* utf8len]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Returns a number of UNICODE characters in UTF`-8 text. Error`-escaped +0xEExx characters for ill`-formed parts of UTF`-8 are correctly +accounted for.&] +[s3;%% &] +[s4;%% &] +[s5;:utf8len`(const char`*`): [@(0.0.255) int]_[* utf8len]([@(0.0.255) const]_[@(0.0.255) cha +r]_`*[*@3 s])&] +[s2;%% Returns a number of UNICODE characters in zero`-terminated +UTF`-8 text. Error`-escaped 0xEExx characters for ill`-formed +parts of UTF`-8 are correctly accounted for.&] +[s3;%% &] +[s4;%% &] +[s5;:lenAsUtf8`(const wchar`*`,int`): [@(0.0.255) int]_[* lenAsUtf8]([@(0.0.255) const]_[_^wchar^ w +char]_`*[*@3 s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Returns number of bytes of UNICODE text when UTF`-8 encoded.&] +[s3;%% &] +[s4;%% &] +[s5;:lenAsUtf8`(const wchar`*`): [@(0.0.255) int]_[* lenAsUtf8]([@(0.0.255) const]_[_^wchar^ w +char]_`*[*@3 s])&] +[s2;%% Returns number of bytes of UNICODE zero`-terminated text when +UTF`-8 encoded..&] +[s3;%% &] +[s4;%% &] +[s5;:CheckUtf8`(const String`&`): [@(0.0.255) bool]_[* CheckUtf8]([@(0.0.255) const]_[_^String^ S +tring][@(0.0.255) `&]_[*@3 src])&] +[s2;%% Checks whether String contains a valid UTF`-8 sequence.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUnicode`(const String`&`,byte`): [_^WString^ WString]_[* ToUnicode]([@(0.0.255) cons +t]_[_^String^ String][@(0.0.255) `&]_[*@3 src], [_^byte^ byte]_[*@3 charset])&] +[s2;%% Converts [%-*@3 src] encoded in [%-*@3 charset] to UNICODE. [%-*@3 charset] +[*/ can] be CHARSET`_UTF8. Invalid bytes are error`-escaped using +0xEExx private range.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUnicode`(const char`*`,int`,byte`): [_^WString^ WString]_[* ToUnicode]([@(0.0.255) c +onst]_[@(0.0.255) char]_`*[*@3 src], [@(0.0.255) int]_[*@3 n], [_^byte^ byte]_[*@3 charset])&] +[s2;%% Converts [%-*@3 n] characters starting at [%-*@3 src] encoded +in [%-*@3 charset] to UNICODE. [%-*@3 charset] [*/ can] be CHARSET`_UTF8. +Invalid bytes are error`-escaped using 0xEExx private range.&] +[s3;%% &] +[s4;%% &] +[s5;:FromUnicode`(const WString`&`,byte`,int`): [_^String^ String]_[* FromUnicode]([@(0.0.255) c +onst]_[_^WString^ WString][@(0.0.255) `&]_[*@3 src], [_^byte^ byte]_[*@3 charset]_`=_CHARSE +T`_DEFAULT, [@(0.0.255) int]_[*@3 defchar]_`=_DEFAULTCHAR)&] +[s2;%% Converts UNICODE [%-*@3 src] encoded in [%-*@3 charset] to 8`-bit +encoding. [%-*@3 charset] [*/ can] be CHARSET`_UTF8. Error`-escape +characters 0xEExx are converted to xx bytes. If code`-point does +not exist in target encoding, [%-*@3 defchar ]is used as result +of conversion.&] +[s3;%% &] +[s4;%% &] +[s5;:ToCharset`(byte`,const String`&`,byte`,int`): [_^String^ String]_[* ToCharset]([_^byte^ b +yte]_[*@3 charset], [@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 s], +[_^byte^ byte]_[*@3 scharset]_`=_CHARSET`_DEFAULT, [@(0.0.255) int]_[*@3 defchar]_`=_DEFA +ULTCHAR)&] +[s2;%% Converts [%-*@3 src] encoded in [%-*@3 scharset] to [%-*@3 charset]. +[%-*@3 charset] [*/ can] be CHARSET`_UTF8. Error`-escape characters +can be used if one of charsets is CHARSET`_UTF8. If code`-point +does not exist in target encoding, [%-*@3 defchar ]is used as result +of conversion.&] +[s3;%% &] +[s4;%% &] +[s5;:IsLetter`(int`): [@(0.0.255) bool]_[* IsLetter]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c] < 2048 and it is UNICODE code`-point.&] +[s3;%% &] +[s4;%% &] +[s5;:IsUpper`(int`): [@(0.0.255) bool]_[* IsUpper]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c] < 2048 and it is upper`-case UNICODE +code`-point.&] +[s3;%% &] +[s4;%% &] +[s5;:IsLower`(int`): [@(0.0.255) bool]_[* IsLower]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c] < 2048 and it is lower`-case UNICODE +code`-point.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(int`): [@(0.0.255) int]_[* ToUpper]([@(0.0.255) int]_[*@3 c])&] +[s2;%% If [%-*@3 c] < 2048 and it is lower`-case, returns respective +UNICODE upper`-case character, otherwise returns [%-*@3 c].&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(int`): [@(0.0.255) int]_[* ToLower]([@(0.0.255) int]_[*@3 c])&] +[s2;%% If [%-*@3 c] < 2048 and it is upper`-case, returns respective +UNICODE lower`-case character, otherwise returns [%-*@3 c].&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(int`): [@(0.0.255) int]_[* ToAscii]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns UNICODE [%-*@3 c] `'converted`' to basic ASCII. Conversion +is performed by removing any diacritical marks. If such conversion +is not possible, returns 0.&] +[s3;%% &] +[s4;%% &] +[s5;:IsLetter`(char`): [@(0.0.255) bool]_[* IsLetter]([@(0.0.255) char]_[*@3 c])&] +[s5;:IsLetter`(signed char`): [@(0.0.255) bool]_[* IsLetter]([@(0.0.255) signed]_[@(0.0.255) c +har]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsLetter`(int`)^ IsLetter]((byt +e)[%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsUpper`(char`): [@(0.0.255) bool]_[* IsUpper]([@(0.0.255) char]_[*@3 c])&] +[s5;:IsUpper`(signed char`): [@(0.0.255) bool]_[* IsUpper]([@(0.0.255) signed]_[@(0.0.255) ch +ar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsUpper`(int`)^ IsUpper]((byte) +[%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsLower`(char`): [@(0.0.255) bool]_[* IsLower]([@(0.0.255) char]_[*@3 c])&] +[s5;:IsLower`(signed char`): [@(0.0.255) bool]_[* IsLower]([@(0.0.255) signed]_[@(0.0.255) ch +ar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsLower`(int`)^ IsLower]((byte) +[%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(char`): [@(0.0.255) int]_[* ToUpper]([@(0.0.255) char]_[*@3 c])&] +[s5;:ToUpper`(signed char`): [@(0.0.255) int]_[* ToUpper]([@(0.0.255) signed]_[@(0.0.255) cha +r]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToUpper`(int`)^ ToUpper]((byte) +[%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(char`): [@(0.0.255) int]_[* ToLower]([@(0.0.255) char]_[*@3 c])&] +[s5;:ToLower`(signed char`): [@(0.0.255) int]_[* ToLower]([@(0.0.255) signed]_[@(0.0.255) cha +r]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToLower`(int`)^ ToLower]((byte) +[%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(char`): [@(0.0.255) int]_[* ToAscii]([@(0.0.255) char]_[*@3 c])&] +[s5;:ToAscii`(signed char`): [@(0.0.255) int]_[* ToAscii]([@(0.0.255) signed]_[@(0.0.255) cha +r]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToAscii`(int`)^ ToAscii]((byte) +[%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsLetter`(wchar`): [@(0.0.255) bool]_[* IsLetter]([_^wchar^ wchar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsLetter`(int`)^ IsLetter]([%-*@3 c +]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsUpper`(wchar`): [@(0.0.255) bool]_[* IsUpper]([_^wchar^ wchar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsUpper`(int`)^ IsUpper]([%-*@3 c +]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsLower`(wchar`): [@(0.0.255) bool]_[* IsLower]([_^wchar^ wchar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsLower`(int`)^ IsLower]([%-*@3 c +]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(wchar`): [@(0.0.255) int]_[* ToUpper]([_^wchar^ wchar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToUpper`(int`)^ ToUpper]([%-*@3 c +]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(wchar`): [@(0.0.255) int]_[* ToLower]([_^wchar^ wchar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToLower`(int`)^ ToLower]([%-*@3 c +]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(wchar`): [@(0.0.255) int]_[* ToAscii]([_^wchar^ wchar]_[*@3 c])&] +[s2;%% Returns [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToAscii`(int`)^ ToAscii]([%-*@3 c +]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsDigit`(int`): [@(0.0.255) bool]_[* IsDigit]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c] is a digit: [%-*@3 c] >`= `'0`' `&`& +[%-*@3 c] <`= `'9`'.&] +[s3;%% &] +[s4;%% &] +[s5;:IsAlpha`(int`): [@(0.0.255) bool]_[* IsAlpha]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c].is [*/ ASCII] alphabetic character: [%-*@3 c] +>`= `'A`' `&`& [%-*@3 c] <`= `'Z`' `|`| [%-*@3 c] >`= `'a`' `&`& +[%-*@3 c] <`= `'z`'.&] +[s3;%% &] +[s4;%% &] +[s5;:IsAlNum`(int`): [@(0.0.255) bool]_[* IsAlNum]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c].is either digit or [*/ ASCII ]alphabetic +character.&] +[s3;%% &] +[s4;%% &] +[s5;:IsLeNum`(int`): [@(0.0.255) bool]_[* IsLeNum]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c].is either digit or [*/ UNICODE] letter +< 2048.&] +[s3;%% &] +[s4;%% &] +[s5;:IsPunct`(int`): [@(0.0.255) bool]_[* IsPunct]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if: [%-*@3 c] !`= `' `' `&`& !IsAlNum([%-*@3 c]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsSpace`(int`): [@(0.0.255) bool]_[* IsSpace]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true [%-*@3 c ]is one of `' `', `'`\f`', `'`\n`', `'`\r`', +`'`\v`', `'`\t`'.&] +[s3;%% &] +[s4;%% &] +[s5;:IsXDigit`(int`): [@(0.0.255) bool]_[* IsXDigit]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true [%-*@3 c].is hexadecimal digit (0`-9, a`-f, A`-F).&] +[s3;%% &] +[s4;%% &] +[s5;:IsCJKIdeograph`(int`): [@(0.0.255) bool]_[* IsCJKIdeograph]([@(0.0.255) int]_[*@3 c])&] +[s2;%% Returns true if [%-*@3 c].is in UNICODE code`-point for CJK +ideogram.&] +[s3;%% &] +[s4;%% &] +[s5;:UnicodeCombine`(word`,word`): [_^word^ word]_[* UnicodeCombine]([_^word^ word]_[*@3 chr], + [_^word^ word]_[*@3 combine])&] +[s2;%% Combines [%-*@3 chr] with diacritical marking [%-*@3 combine], +returns the result as UNICODE character. Not all combinations +are covered...&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(wchar`*`,const wchar`*`,int`): [@(0.0.255) void]_[* ToUpper]([_^wchar^ wchar]_ +`*[*@3 t], [@(0.0.255) const]_[_^wchar^ wchar]_`*[*@3 s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to upper`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(wchar`*`,const wchar`*`,int`): [@(0.0.255) void]_[* ToLower]([_^wchar^ wchar]_ +`*[*@3 t], [@(0.0.255) const]_[_^wchar^ wchar]_`*[*@3 s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to lower`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(wchar`*`,const wchar`*`,int`): [@(0.0.255) void]_[* ToAscii]([_^wchar^ wchar]_ +`*[*@3 t], [@(0.0.255) const]_[_^wchar^ wchar]_`*[*@3 s], [@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to basic ASCII (see [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToAscii`(int`)^ T +oAscii]).&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(wchar`*`,int`): [@(0.0.255) void]_[* ToUpper]([_^wchar^ wchar]_`*[*@3 s], +[@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to upper`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(wchar`*`,int`): [@(0.0.255) void]_[* ToLower]([_^wchar^ wchar]_`*[*@3 s], +[@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to lower`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(wchar`*`,int`): [@(0.0.255) void]_[* ToAscii]([_^wchar^ wchar]_`*[*@3 s], +[@(0.0.255) int]_[*@3 len])&] +[s2;%% Converts UNICODE array to basic ASCII (see [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToAscii`(int`)^ T +oAscii]).&] +[s3;%% &] +[s4;%% &] +[s5;:IsLetter`(int`,byte`): [@(0.0.255) bool]_[* IsLetter]([@(0.0.255) int]_[*@3 c], +[_^byte^ byte]_[*@3 charset])&] +[s2;%% Returns true if character [%-*@3 c] encoded using 8`-bit [%-*@3 charset] +is letter.&] +[s3;%% &] +[s4;%% &] +[s5;:IsUpper`(int`,byte`): [@(0.0.255) bool]_[* IsUpper]([@(0.0.255) int]_[*@3 c], +[_^byte^ byte]_[*@3 charset])&] +[s2; Returns true if character [*@3 c] encoded using 8`-bit [*@3 charset] +is upper`-case letter.&] +[s3;%% &] +[s4;%% &] +[s5;:IsLower`(int`,byte`): [@(0.0.255) bool]_[* IsLower]([@(0.0.255) int]_[*@3 c], +[_^byte^ byte]_[*@3 charset])&] +[s2; Returns true if character [*@3 c] encoded using 8`-bit [*@3 charset] +is lower`-case letter.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(int`,byte`): [@(0.0.255) int]_[* ToUpper]([@(0.0.255) int]_[*@3 c], +[_^byte^ byte]_[*@3 charset])&] +[s2;%% Converts character [%-*@3 c] encoded using 8`-bit charset to +upper`-case if it is letter, otherwise returns it unchanged.&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(int`,byte`): [@(0.0.255) int]_[* ToLower]([@(0.0.255) int]_[*@3 c], +[_^byte^ byte]_[*@3 charset])&] +[s2; Converts character [*@3 c] encoded using 8`-bit charset to lower`-case +if it is letter, otherwise returns it unchanged.&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(int`,byte`): [@(0.0.255) int]_[* ToAscii]([@(0.0.255) int]_[*@3 c], +[_^byte^ byte]_[*@3 charset])&] +[s2; Converts character [*@3 c] encoded using 8`-bit charset to basic +ASCII character by removing diacritical markings. If [*@3 c] is +not letter, returns it unchanged.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(char`*`,const char`*`,int`,byte`): [@(0.0.255) void]_[* ToUpper]([@(0.0.255) c +har]_`*[*@3 t], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 s], [@(0.0.255) int]_[*@3 len], +[_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; [%% Converts array ][*@3 s ][%% of ][*@3 len][%% characters with encoding +][*@3 charset][%% to upper`-case (using ][%%^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsUpper`(int`,byte`)^ T +oUpper][%% ). Stores result to ][*@3 t].&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(char`*`,const char`*`,int`,byte`): [@(0.0.255) void]_[* ToLower]([@(0.0.255) c +har]_`*[*@3 t], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 s], [@(0.0.255) int]_[*@3 len], +[_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts array [*@3 s ]of [*@3 len] characters with encoding [*@3 charset] +to lower`-case (using [^topic`:`/`/Core`/src`/CharSet`$en`-us`#IsLower`(int`,byte`)^ T +oLower]). Stores result to [*@3 t].&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(char`*`,const char`*`,int`,byte`): [@(0.0.255) void]_[* ToAscii]([@(0.0.255) c +har]_`*[*@3 t], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 s], [@(0.0.255) int]_[*@3 len], +[_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts array [*@3 s ]of [*@3 len] characters with encoding [*@3 charset] +to basic ASCII (using [^topic`:`/`/Core`/src`/CharSet`$en`-us`#ToAscii`(int`,byte`)^ T +oAscii]). Stores result to [*@3 t].&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(char`*`,int`,byte`): [@(0.0.255) void]_[* ToUpper]([@(0.0.255) char]_`*[*@3 s], + [@(0.0.255) int]_[*@3 len], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts array [*@3 s ]of [*@3 len] characters with encoding [*@3 charset] +to upper`-case (using ToUpper). Stores result back to [*@3 s].&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(char`*`,int`,byte`): [@(0.0.255) void]_[* ToLower]([@(0.0.255) char]_`*[*@3 s], + [@(0.0.255) int]_[*@3 len], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts array [*@3 s ]of [*@3 len] characters with encoding [*@3 charset] +to lower`-case (using ToLower). Stores result back to [*@3 s].&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(char`*`,int`,byte`): [@(0.0.255) void]_[* ToAscii]([@(0.0.255) char]_`*[*@3 s], + [@(0.0.255) int]_[*@3 len], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts array [*@3 s ]of [*@3 len] characters with encoding [*@3 charset] +to basic ASCII (using ToAscii). Stores result back to [*@3 s].&] +[s3;%% &] +[s4;%% &] +[s5;:InitCaps`(const wchar`*`): [_^WString^ WString]_[* InitCaps]([@(0.0.255) const]_[_^wchar^ w +char]_`*[*@3 s])&] +[s2;%% Converts input zero`-terminated UNICODE string.so that first +letters in each word (letters that are next to whitespace) are +upper`-case, rest is lower`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:InitCaps`(const WString`&`): [_^WString^ WString]_[* InitCaps]([@(0.0.255) const]_[_^WString^ W +String][@(0.0.255) `&]_[*@3 s])&] +[s2; Converts UNICODE string.so that first letters in each word (letters +that are next to whitespace) are upper`-case, rest is lower`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(const WString`&`): [_^WString^ WString]_[* ToUpper]([@(0.0.255) const]_[_^WString^ W +String][@(0.0.255) `&]_[*@3 w])&] +[s2;%% Converts UNICODE string to upper`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(const WString`&`): [_^WString^ WString]_[* ToLower]([@(0.0.255) const]_[_^WString^ W +String][@(0.0.255) `&]_[*@3 w])&] +[s2; Converts UNICODE string to lower`-case.&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(const WString`&`): [_^WString^ WString]_[* ToAscii]([@(0.0.255) const]_[_^WString^ W +String][@(0.0.255) `&]_[*@3 w])&] +[s2; Converts UNICODE string to basic ASCII by removing diacritical +markings.&] +[s3;%% &] +[s4;%% &] +[s5;:InitCaps`(const char`*`,byte`): [_^String^ String]_[* InitCaps]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts input zero`-terminated 8`-bit string.encoded in [*@3 charset] +so that first letters in each word (letters that are next to +whitespace) are upper`-case, rest is lower`-case. [*@3 charset] +can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(const String`&`,byte`): [_^String^ String]_[* ToUpper]([@(0.0.255) const]_[_^String^ S +tring][@(0.0.255) `&]_[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts input 8`-bit string.encoded in [*@3 charset] to upper`-case. +[*@3 charset] can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(const String`&`,byte`): [_^String^ String]_[* ToLower]([@(0.0.255) const]_[_^String^ S +tring][@(0.0.255) `&]_[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts input 8`-bit string.encoded in [*@3 charset] to lower`-case. +[*@3 charset] can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(const String`&`,byte`): [_^String^ String]_[* ToAscii]([@(0.0.255) const]_[_^String^ S +tring][@(0.0.255) `&]_[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts input 8`-bit string.encoded in [*@3 charset] to basic +ASCII by removing diacritical markings. [*@3 charset] can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ToUpper`(const char`*`,byte`): [_^String^ String]_[* ToUpper]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts input zero`-terminated 8`-bit string.encoded in [*@3 charset] +to upper`-case. [*@3 charset] can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ToLower`(const char`*`,byte`): [_^String^ String]_[* ToLower]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2; Converts input zero`-terminated 8`-bit string.encoded in [*@3 charset] +to lower`-case. [*@3 charset] can be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:ToAscii`(const char`*`,byte`): [_^String^ String]_[* ToAscii]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 s], [_^byte^ byte]_[*@3 charset]_`=_CHARSET`_DEFAULT)&] +[s2;%% Converts input zero`-terminated 8`-bit string.encoded in charset +to basic ASCII by removing diacritical markings. charset can +be CHARSET`_UTF8.&] +[s3;%% &] +[s4;%% &] +[s5;:LoadStreamBOMW`(Stream`&`): [_^WString^ WString]_[* LoadStreamBOMW]([_^Stream^ Stream][@(0.0.255) `& +]_[*@3 in])&] +[s2;%% Reads stream into UNICODE string, granting optional BOM UNICODE +mark. If there is no BOM, text is considered to be in host defined +encoding. (e.g. set by linux locale).&] +[s3;%% &] +[s4;%% &] +[s5;:LoadStreamBOM`(Stream`&`): [_^String^ String]_[* LoadStreamBOM]([_^Stream^ Stream][@(0.0.255) `& +]_[*@3 in])&] +[s2; Reads stream into 8`-bit string with default encoding, granting +optional BOM UNICODE mark. If there is no BOM, text is considered +to be in host defined encoding. (e.g. set by linux locale).&] +[s3;%% &] +[s4;%% &] +[s5;:LoadFileBOMW`(const char`*`): [_^WString^ WString]_[* LoadFileBOMW]([@(0.0.255) const]_ +[@(0.0.255) char]_`*[*@3 path])&] +[s2; Reads file into UNICODE string, granting optional BOM UNICODE +mark. If there is no BOM, text is considered to be in host defined +encoding. (e.g. set by linux locale). If the file cannot be read, +returns WString`::GetVoid().&] +[s3;%% &] +[s4;%% &] +[s5;:LoadFileBOM`(const char`*`): [_^String^ String]_[* LoadFileBOM]([@(0.0.255) const]_[@(0.0.255) c +har]_`*[*@3 path])&] +[s2; [%% Reads file into 8`-bit string with default encoding, granting +optional BOM UNICODE mark. If there is no BOM, text is considered +to be in host defined encoding. (e.g. set by linux locale). ]If +the file cannot be read, returns String`::GetVoid().&] +[s3;%% &] +[s4;%% &] +[s5;:SaveStreamBOM`(Stream`&`,const WString`&`): [@(0.0.255) bool]_[* SaveStreamBOM]([_^Stream^ S +tream][@(0.0.255) `&]_[*@3 out], [@(0.0.255) const]_[_^WString^ WString][@(0.0.255) `&]_[*@3 d +ata])&] +[s2;%% Saves stream in 16`-bit UNICODE format, with BOM header. Returns +true on success.&] +[s3;%% &] +[s4;%% &] +[s5;:SaveFileBOM`(const char`*`,const WString`&`): [@(0.0.255) bool]_[* SaveFileBOM]([@(0.0.255) c +onst]_[@(0.0.255) char]_`*[*@3 path], [@(0.0.255) const]_[_^WString^ WString][@(0.0.255) `& +]_[*@3 data])&] +[s2; Saves stream in 16`-bit UNICODE format, with BOM header. Returns +true on success.&] +[s3;%% &] +[s4;%% &] +[s5;:SaveStreamBOMUtf8`(Stream`&`,const String`&`): [@(0.0.255) bool]_[* SaveStreamBOMUtf +8]([_^Stream^ Stream][@(0.0.255) `&]_[*@3 out], [@(0.0.255) const]_[_^String^ String][@(0.0.255) `& +]_[*@3 data])&] +[s2; [%% Saves 8`-bit string in default encoding to the stream.] Returns +true on success.&] +[s3;%% &] +[s4;%% &] +[s5;:SaveFileBOMUtf8`(const char`*`,const String`&`): [@(0.0.255) bool]_[* SaveFileBOMUtf +8]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 path], [@(0.0.255) const]_[_^String^ String][@(0.0.255) `& +]_[*@3 data])&] +[s2; Saves 8`-bit string in default encoding to the file. Returns +true on success.&] +[s0; ] \ No newline at end of file diff --git a/uppsrc/CtrlLib/init b/uppsrc/CtrlLib/init index edf5d1c39..9d6bc38c3 100644 --- a/uppsrc/CtrlLib/init +++ b/uppsrc/CtrlLib/init @@ -3,7 +3,7 @@ #include "CtrlCore/init" #include "RichText/init" #include "PdfDraw/init" -#define BLITZ_INDEX__ F946C11C704A7351383B578758395F350 +#define BLITZ_INDEX__ F978A8DB3120B5F54197F4DB2205753CA #include "CtrlLib.icpp" #undef BLITZ_INDEX__ #endif