1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-06 01:33:12 +02:00

core: improve case convert and insensitive char comparisons (closes #258)

All lowercase letters are now properly converted to uppercase letters (and vice
versa), via functions `towupper` and `towlower`.

Functions `string_tolower`, `string_toupper` and `utf8_charcasecmp` have been
optimized to be faster when there are ASCII chars (< 128); functions are about
25-40% faster with mixed chars (both ASCII and multi-bytes).

Function `utf8_wide_char` has been removed, `utf8_char_int` can be used
instead.
This commit is contained in:
Sébastien Helleu
2022-12-21 19:23:29 +01:00
parent 95286c1eb3
commit 68b510517e
13 changed files with 456 additions and 216 deletions
+6 -4
View File
@@ -191,8 +191,9 @@ TEST(CoreString, ToLower)
WEE_TEST_STR(NULL, string_tolower (NULL));
WEE_TEST_STR("", string_tolower (""));
WEE_TEST_STR("abcd_É", string_tolower ("ABCD_É"));
WEE_TEST_STR("À É Ï Ô Ü Ÿ Æ Œ Ç", string_tolower ("À É Ï Ô Ü Ÿ Æ Œ Ç"));
WEE_TEST_STR("abcd_é", string_tolower ("ABCD_É"));
WEE_TEST_STR("àáâãäåæçèéêëìíîïðñòóôõöøœšùúûüýÿ",
string_tolower ("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØŒŠÙÚÛÜÝŸ"));
WEE_TEST_STR("", string_tolower (""));
WEE_TEST_STR("[⛄]", string_tolower ("[⛄]"));
}
@@ -209,8 +210,9 @@ TEST(CoreString, ToUpper)
WEE_TEST_STR(NULL, string_tolower (NULL));
WEE_TEST_STR("", string_toupper (""));
WEE_TEST_STR("ABCD_é", string_toupper ("abcd_é"));
WEE_TEST_STR("à é ï ô ü ÿ æ œ ç", string_toupper ("à é ï ô ü ÿ æ œ ç"));
WEE_TEST_STR("ABCD_É", string_toupper ("abcd_é"));
WEE_TEST_STR("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØŒŠÙÚÛÜÝŸ",
string_toupper ("àáâãäåæçèéêëìíîïðñòóôõöøœšùúûüýÿ"));
WEE_TEST_STR("", string_toupper (""));
WEE_TEST_STR("[⛄]", string_toupper ("[⛄]"));
}