mirror of
https://github.com/weechat/weechat.git
synced 2026-06-12 14:14:48 +02:00
api: rename char comparison functions "utf8_char*" to "string_char*"
This commit is contained in:
+2
-1
@@ -26,7 +26,8 @@ New features::
|
||||
* core: add signals "buffer_user_input_xxx" and "buffer_user_closing_xxx" for buffers created with `/buffer add` (issue #1848)
|
||||
* core: add identifier in buffer lines (issue #901)
|
||||
* core: add option `unicode` in command `/debug`
|
||||
* api: return arithmetic difference between chars in functions string_strcasecmp, string_strcasecmp_range, string_strncasecmp, string_strncasecmp_range, string_strcmp_ignore_chars, utf8_charcmp, utf8_charcasecmp, utf8_charcasecmp_range
|
||||
* api: rename char comparison functions "utf8_char*" to "string_char*"
|
||||
* api: return arithmetic difference between chars in functions string_charcmp, string_charcasecmp, string_charcasecmp_range, string_strcasecmp, string_strcasecmp_range, string_strncasecmp, string_strncasecmp_range, string_strcmp_ignore_chars
|
||||
* api: return newly allocated string in functions string_tolower and string_toupper
|
||||
* api: add function utf8_strncpy
|
||||
* trigger: add regex command "y" to translate chars, set default regex command to "s" (regex replace) (issue #1510)
|
||||
|
||||
+3
-3
@@ -26,14 +26,14 @@ https://weechat.org/files/changelog/ChangeLog-devel.html[ChangeLog]
|
||||
The following functions now return arithmetic result of subtracting the last
|
||||
compared char in string2 from the last compared char in string1:
|
||||
|
||||
* string_charcmp
|
||||
* string_charcasecmp
|
||||
* string_charcasecmp_range
|
||||
* string_strcasecmp
|
||||
* string_strcasecmp_range
|
||||
* string_strncasecmp
|
||||
* string_strncasecmp_range
|
||||
* string_strcmp_ignore_chars
|
||||
* utf8_charcmp
|
||||
* utf8_charcasecmp
|
||||
* utf8_charcasecmp_range
|
||||
|
||||
Example with WeeChat 3.8:
|
||||
|
||||
|
||||
@@ -692,6 +692,81 @@ free (str);
|
||||
[NOTE]
|
||||
This function is not available in scripting API.
|
||||
|
||||
==== string_charcmp
|
||||
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Compare two chars.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _string1_: first string for comparison
|
||||
* _string2_: second string for comparison
|
||||
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
This function is not available in scripting API.
|
||||
|
||||
==== string_charcasecmp
|
||||
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Compare two chars, ignoring case.
|
||||
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _string1_: first string for comparison
|
||||
* _string2_: second string for comparison
|
||||
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
This function is not available in scripting API.
|
||||
|
||||
==== strcasecmp
|
||||
|
||||
_Updated in 1.0, 3.8._
|
||||
@@ -3637,81 +3712,6 @@ int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
|
||||
[NOTE]
|
||||
This function is not available in scripting API.
|
||||
|
||||
==== utf8_charcmp
|
||||
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Compare two UTF-8 chars.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _string1_: first string for comparison
|
||||
* _string2_: second string for comparison
|
||||
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
This function is not available in scripting API.
|
||||
|
||||
==== utf8_charcasecmp
|
||||
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Compare two UTF-8 chars, ignoring case.
|
||||
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _string1_: first string for comparison
|
||||
* _string2_: second string for comparison
|
||||
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
This function is not available in scripting API.
|
||||
|
||||
==== utf8_char_size_screen
|
||||
|
||||
_Updated in 3.8._
|
||||
|
||||
@@ -706,6 +706,81 @@ free (str);
|
||||
[NOTE]
|
||||
Cette fonction n'est pas disponible dans l'API script.
|
||||
|
||||
==== string_charcmp
|
||||
|
||||
_Mis à jour dans la 1.0, 3.8._
|
||||
|
||||
Comparer deux caractères.
|
||||
|
||||
Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
|
||||
* _string1_ : première chaîne pour la comparaison
|
||||
* _string2_ : seconde chaîne pour la comparaison
|
||||
|
||||
Valeur de retour : résultat de la soustraction du premier caractère dans _string2_
|
||||
du premier caractère dans _string1_ :
|
||||
|
||||
* < 0 si char1 < char2
|
||||
* 0 si char1 == char2
|
||||
* > 0 si char1 > char2
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Cette fonction n'est pas disponible dans l'API script.
|
||||
|
||||
==== string_charcasecmp
|
||||
|
||||
_Mis à jour dans la 1.0, 3.8._
|
||||
|
||||
Comparer deux caractères en ignorant la casse.
|
||||
|
||||
[NOTE]
|
||||
Le comportement a changé dans la version 3.8 : désormais toutes les lettres en
|
||||
majuscules sont correctement converties en minuscules (par appel à la fonction
|
||||
`towlower`), en plus de l'intervalle de `A` à `Z`.
|
||||
|
||||
Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
|
||||
* _string1_ : première chaîne pour la comparaison
|
||||
* _string2_ : seconde chaîne pour la comparaison
|
||||
|
||||
Valeur de retour : résultat de la soustraction du premier caractère dans _string2_
|
||||
(converti en minuscule) du premier caractère dans _string1_ (converti en minuscule) :
|
||||
|
||||
* < 0 si char1 < char2
|
||||
* 0 si char1 == char2
|
||||
* > 0 si char1 > char2
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Cette fonction n'est pas disponible dans l'API script.
|
||||
|
||||
==== strcasecmp
|
||||
|
||||
_Mis à jour dans la 1.0, 3.8._
|
||||
@@ -3703,81 +3778,6 @@ int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
|
||||
[NOTE]
|
||||
Cette fonction n'est pas disponible dans l'API script.
|
||||
|
||||
==== utf8_charcmp
|
||||
|
||||
_Mis à jour dans la 1.0, 3.8._
|
||||
|
||||
Comparer deux caractères UTF-8.
|
||||
|
||||
Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
|
||||
* _string1_ : première chaîne pour la comparaison
|
||||
* _string2_ : seconde chaîne pour la comparaison
|
||||
|
||||
Valeur de retour : résultat de la soustraction du premier caractère dans _string2_
|
||||
du premier caractère dans _string1_ :
|
||||
|
||||
* < 0 si char1 < char2
|
||||
* 0 si char1 == char2
|
||||
* > 0 si char1 > char2
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Cette fonction n'est pas disponible dans l'API script.
|
||||
|
||||
==== utf8_charcasecmp
|
||||
|
||||
_Mis à jour dans la 1.0, 3.8._
|
||||
|
||||
Comparer deux caractères UTF-8 en ignorant la casse.
|
||||
|
||||
[NOTE]
|
||||
Le comportement a changé dans la version 3.8 : désormais toutes les lettres en
|
||||
majuscules sont correctement converties en minuscules (par appel à la fonction
|
||||
`towlower`), en plus de l'intervalle de `A` à `Z`.
|
||||
|
||||
Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
|
||||
* _string1_ : première chaîne pour la comparaison
|
||||
* _string2_ : seconde chaîne pour la comparaison
|
||||
|
||||
Valeur de retour : résultat de la soustraction du premier caractère dans _string2_
|
||||
(converti en minuscule) du premier caractère dans _string1_ (converti en minuscule) :
|
||||
|
||||
* < 0 si char1 < char2
|
||||
* 0 si char1 == char2
|
||||
* > 0 si char1 > char2
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Cette fonction n'est pas disponible dans l'API script.
|
||||
|
||||
==== utf8_char_size_screen
|
||||
|
||||
_Mis à jour dans la 3.8._
|
||||
|
||||
@@ -734,6 +734,88 @@ free (str);
|
||||
[NOTE]
|
||||
Questa funzione non è disponibile nelle API per lo scripting.
|
||||
|
||||
==== string_charcmp
|
||||
|
||||
// TRANSLATION MISSING
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Confronta due caratteri.
|
||||
|
||||
Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
|
||||
* _string1_: prima stringa da comparare
|
||||
* _string2_: seconda stringa da comparare
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
Esempio in C:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Questa funzione non è disponibile nelle API per lo scripting.
|
||||
|
||||
==== string_charcasecmp
|
||||
|
||||
// TRANSLATION MISSING
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Confronta due caratteri, ignorando la sensibilità alle maiuscole.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
|
||||
* _string1_: prima stringa da comparare
|
||||
* _string2_: seconda stringa da comparare
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
Esempio in C:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Questa funzione non è disponibile nelle API per lo scripting.
|
||||
|
||||
==== strcasecmp
|
||||
|
||||
// TRANSLATION MISSING
|
||||
@@ -3803,88 +3885,6 @@ int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
|
||||
[NOTE]
|
||||
Questa funzione non è disponibile nelle API per lo scripting.
|
||||
|
||||
==== utf8_charcmp
|
||||
|
||||
// TRANSLATION MISSING
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Confronta due caratteri UTF-8.
|
||||
|
||||
Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
|
||||
* _string1_: prima stringa da comparare
|
||||
* _string2_: seconda stringa da comparare
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
Esempio in C:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Questa funzione non è disponibile nelle API per lo scripting.
|
||||
|
||||
==== utf8_charcasecmp
|
||||
|
||||
// TRANSLATION MISSING
|
||||
_Updated in 1.0, 3.8._
|
||||
|
||||
Confronta due caratteri UTF-8, ignorando la sensibilità alle maiuscole.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
|
||||
* _string1_: prima stringa da comparare
|
||||
* _string2_: seconda stringa da comparare
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
Esempio in C:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Questa funzione non è disponibile nelle API per lo scripting.
|
||||
|
||||
==== utf8_char_size_screen
|
||||
|
||||
// TRANSLATION MISSING
|
||||
|
||||
@@ -710,6 +710,86 @@ free (str);
|
||||
[NOTE]
|
||||
スクリプト API ではこの関数を利用できません。
|
||||
|
||||
==== string_charcmp
|
||||
|
||||
_WeeChat バージョン 1.0, 3.8 で更新。_
|
||||
|
||||
2 つの 文字を比較。
|
||||
|
||||
プロトタイプ:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
引数:
|
||||
|
||||
* _string1_: 1 番目の比較文字列
|
||||
* _string2_: 2 番目の比較文字列
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C 言語での使用例:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
スクリプト API ではこの関数を利用できません。
|
||||
|
||||
==== string_charcasecmp
|
||||
|
||||
_WeeChat バージョン 1.0, 3.8 で更新。_
|
||||
|
||||
大文字小文字の違いを無視して、2 つの 文字を比較。
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
プロトタイプ:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
引数:
|
||||
|
||||
* _string1_: 1 番目の比較文字列
|
||||
* _string2_: 2 番目の比較文字列
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C 言語での使用例:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
スクリプト API ではこの関数を利用できません。
|
||||
|
||||
==== strcasecmp
|
||||
|
||||
_WeeChat バージョン 1.0, 3.8 で更新。_
|
||||
@@ -3731,86 +3811,6 @@ int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
|
||||
[NOTE]
|
||||
スクリプト API ではこの関数を利用できません。
|
||||
|
||||
==== utf8_charcmp
|
||||
|
||||
_WeeChat バージョン 1.0, 3.8 で更新。_
|
||||
|
||||
2 つの UTF-8 文字を比較。
|
||||
|
||||
プロトタイプ:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
引数:
|
||||
|
||||
* _string1_: 1 番目の比較文字列
|
||||
* _string2_: 2 番目の比較文字列
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C 言語での使用例:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
スクリプト API ではこの関数を利用できません。
|
||||
|
||||
==== utf8_charcasecmp
|
||||
|
||||
_WeeChat バージョン 1.0, 3.8 で更新。_
|
||||
|
||||
大文字小文字の違いを無視して、2 つの UTF-8 文字を比較。
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
プロトタイプ:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
引数:
|
||||
|
||||
* _string1_: 1 番目の比較文字列
|
||||
* _string2_: 2 番目の比較文字列
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C 言語での使用例:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
スクリプト API ではこの関数を利用できません。
|
||||
|
||||
==== utf8_char_size_screen
|
||||
|
||||
_WeeChat バージョン 3.8 で更新。_
|
||||
|
||||
@@ -671,6 +671,86 @@ free (str);
|
||||
[NOTE]
|
||||
Ова функција није доступна у API скриптовања.
|
||||
|
||||
==== string_charcmp
|
||||
|
||||
_Ажурирано у верзији 1.0, 3.8._
|
||||
|
||||
Пореди два карактера.
|
||||
|
||||
Прототип:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
|
||||
* _string1_: први стринг за поређење
|
||||
* _string2_: други стринг за поређење
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C пример:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Ова функција није доступна у API скриптовања.
|
||||
|
||||
==== string_charcasecmp
|
||||
|
||||
_Ажурирано у верзији 1.0, 3.8._
|
||||
|
||||
Пореди два карактера, уз игнорисање разлике у величини слова.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
Прототип:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_string_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
|
||||
* _string1_: први стринг за поређење
|
||||
* _string2_: други стринг за поређење
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C пример:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_string_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Ова функција није доступна у API скриптовања.
|
||||
|
||||
==== strcasecmp
|
||||
|
||||
_Ажурирано у верзији 1.0, 3.8._
|
||||
@@ -3540,86 +3620,6 @@ int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
|
||||
[NOTE]
|
||||
Ова функција није доступна у API скриптовања.
|
||||
|
||||
==== utf8_charcmp
|
||||
|
||||
_Ажурирано у верзији 1.0, 3.8._
|
||||
|
||||
Пореди два UTF-8 карактера.
|
||||
|
||||
Прототип:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
|
||||
* _string1_: први стринг за поређење
|
||||
* _string2_: други стринг за поређење
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_ from
|
||||
the first char in _string1_:
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C пример:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Ова функција није доступна у API скриптовања.
|
||||
|
||||
==== utf8_charcasecmp
|
||||
|
||||
_Ажурирано у верзији 1.0, 3.8._
|
||||
|
||||
Пореди два UTF-8 карактера, уз игнорисање разлике у величини слова.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[NOTE]
|
||||
Behavior has changed in version 3.8: now all uppercase letters are properly
|
||||
converted to lowercase (by calling function `towlower`), in addition to the
|
||||
range `A` to `Z`.
|
||||
|
||||
Прототип:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_utf8_charcasecmp (const char *string1, const char *string2);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
|
||||
* _string1_: први стринг за поређење
|
||||
* _string2_: други стринг за поређење
|
||||
|
||||
// TRANSLATION MISSING
|
||||
Return value: arithmetic result of subtracting the first char in _string2_
|
||||
(converted to lowercase) from the first char in _string1_ (converted to lowercase):
|
||||
|
||||
// TRANSLATION MISSING
|
||||
* < 0 if char1 < char2
|
||||
* 0 if char1 == char2
|
||||
* > 0 if char1 > char2
|
||||
|
||||
C пример:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int diff = weechat_utf8_charcasecmp ("aaa", "CCC"); /* == -2 */
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Ова функција није доступна у API скриптовања.
|
||||
|
||||
==== utf8_char_size_screen
|
||||
|
||||
_Ажурирано у верзији 3.8._
|
||||
|
||||
+108
-15
@@ -393,6 +393,97 @@ string_toupper (const char *string)
|
||||
return string_dyn_free (result, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two chars (case sensitive).
|
||||
*
|
||||
* Returns: arithmetic result of subtracting the first char in string2
|
||||
* from the first char in string1:
|
||||
* < 0: string1 < string2
|
||||
* 0: string1 == string2
|
||||
* > 0: string1 > string2
|
||||
*/
|
||||
|
||||
int
|
||||
string_charcmp (const char *string1, const char *string2)
|
||||
{
|
||||
return utf8_char_int (string1) - utf8_char_int (string2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two chars (case insensitive).
|
||||
*
|
||||
* Returns: arithmetic result of subtracting the first char in string2
|
||||
* (converted to lowercase) from the first char in string1 (converted
|
||||
* to lowercase):
|
||||
* < 0: string1 < string2
|
||||
* 0: string1 == string2
|
||||
* > 0: string1 > string2
|
||||
*/
|
||||
|
||||
int
|
||||
string_charcasecmp (const char *string1, const char *string2)
|
||||
{
|
||||
wint_t wchar1, wchar2;
|
||||
|
||||
/*
|
||||
* optimization for single-byte chars: only letters A-Z must be converted
|
||||
* to lowercase; this is faster than calling `towlower`
|
||||
*/
|
||||
if (string1 && !((unsigned char)(string1[0]) & 0x80)
|
||||
&& string2 && !((unsigned char)(string2[0]) & 0x80))
|
||||
{
|
||||
wchar1 = string1[0];
|
||||
if ((wchar1 >= 'A') && (wchar1 <= 'Z'))
|
||||
wchar1 += ('a' - 'A');
|
||||
wchar2 = string2[0];
|
||||
if ((wchar2 >= 'A') && (wchar2 <= 'Z'))
|
||||
wchar2 += ('a' - 'A');
|
||||
}
|
||||
else
|
||||
{
|
||||
wchar1 = towlower (utf8_char_int (string1));
|
||||
wchar2 = towlower (utf8_char_int (string2));
|
||||
}
|
||||
|
||||
return wchar1 - wchar2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two chars (case insensitive using a range).
|
||||
*
|
||||
* The range is the number of chars which can be converted from upper to lower
|
||||
* case. For example 26 = all letters of alphabet, 29 = all letters + 3 chars.
|
||||
*
|
||||
* Examples:
|
||||
* - range = 26: A-Z ==> a-z
|
||||
* - range = 29: A-Z [ \ ] ==> a-z { | }
|
||||
* - range = 30: A-Z [ \ ] ^ ==> a-z { | } ~
|
||||
* (ranges 29 and 30 are used by some protocols like IRC)
|
||||
*
|
||||
* Returns: arithmetic result of subtracting the last compared char in string2
|
||||
* (converted to lowercase) from the last compared char in string1 (converted
|
||||
* to lowercase):
|
||||
* < 0: string1 < string2
|
||||
* 0: string1 == string2
|
||||
* > 0: string1 > string2
|
||||
*/
|
||||
|
||||
int
|
||||
string_charcasecmp_range (const char *string1, const char *string2, int range)
|
||||
{
|
||||
wchar_t wchar1, wchar2;
|
||||
|
||||
wchar1 = utf8_char_int (string1);
|
||||
if ((wchar1 >= (wchar_t)'A') && (wchar1 < (wchar_t)('A' + range)))
|
||||
wchar1 += ('a' - 'A');
|
||||
|
||||
wchar2 = utf8_char_int (string2);
|
||||
if ((wchar2 >= (wchar_t)'A') && (wchar2 < (wchar_t)('A' + range)))
|
||||
wchar2 += ('a' - 'A');
|
||||
|
||||
return wchar1 - wchar2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two strings (case insensitive).
|
||||
*
|
||||
@@ -411,7 +502,7 @@ string_strcasecmp (const char *string1, const char *string2)
|
||||
|
||||
while (string1 && string1[0] && string2 && string2[0])
|
||||
{
|
||||
diff = utf8_charcasecmp (string1, string2);
|
||||
diff = string_charcasecmp (string1, string2);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
|
||||
@@ -419,7 +510,7 @@ string_strcasecmp (const char *string1, const char *string2)
|
||||
string2 = utf8_next_char (string2);
|
||||
}
|
||||
|
||||
return utf8_charcasecmp (string1, string2);
|
||||
return string_charcasecmp (string1, string2);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -449,7 +540,7 @@ string_strcasecmp_range (const char *string1, const char *string2, int range)
|
||||
|
||||
while (string1 && string1[0] && string2 && string2[0])
|
||||
{
|
||||
diff = utf8_charcasecmp_range (string1, string2, range);
|
||||
diff = string_charcasecmp_range (string1, string2, range);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
|
||||
@@ -457,7 +548,7 @@ string_strcasecmp_range (const char *string1, const char *string2, int range)
|
||||
string2 = utf8_next_char (string2);
|
||||
}
|
||||
|
||||
return utf8_charcasecmp_range (string1, string2, range);
|
||||
return string_charcasecmp_range (string1, string2, range);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -479,7 +570,7 @@ string_strncasecmp (const char *string1, const char *string2, int max)
|
||||
count = 0;
|
||||
while ((count < max) && string1 && string1[0] && string2 && string2[0])
|
||||
{
|
||||
diff = utf8_charcasecmp (string1, string2);
|
||||
diff = string_charcasecmp (string1, string2);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
|
||||
@@ -491,7 +582,7 @@ string_strncasecmp (const char *string1, const char *string2, int max)
|
||||
if (count >= max)
|
||||
return 0;
|
||||
else
|
||||
return utf8_charcasecmp (string1, string2);
|
||||
return string_charcasecmp (string1, string2);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -523,7 +614,7 @@ string_strncasecmp_range (const char *string1, const char *string2, int max,
|
||||
count = 0;
|
||||
while ((count < max) && string1 && string1[0] && string2 && string2[0])
|
||||
{
|
||||
diff = utf8_charcasecmp_range (string1, string2, range);
|
||||
diff = string_charcasecmp_range (string1, string2, range);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
|
||||
@@ -535,7 +626,7 @@ string_strncasecmp_range (const char *string1, const char *string2, int max,
|
||||
if (count >= max)
|
||||
return 0;
|
||||
else
|
||||
return utf8_charcasecmp_range (string1, string2, range);
|
||||
return string_charcasecmp_range (string1, string2, range);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -572,13 +663,14 @@ string_strcmp_ignore_chars (const char *string1, const char *string2,
|
||||
if (!string1 || !string1[0] || !string2 || !string2[0])
|
||||
{
|
||||
return (case_sensitive) ?
|
||||
utf8_charcmp (string1, string2) :
|
||||
utf8_charcasecmp (string1, string2);
|
||||
string_charcmp (string1, string2) :
|
||||
string_charcasecmp (string1, string2);
|
||||
}
|
||||
|
||||
/* look at diff */
|
||||
diff = (case_sensitive) ?
|
||||
utf8_charcmp (string1, string2) : utf8_charcasecmp (string1, string2);
|
||||
string_charcmp (string1, string2) :
|
||||
string_charcasecmp (string1, string2);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
|
||||
@@ -596,7 +688,8 @@ string_strcmp_ignore_chars (const char *string1, const char *string2,
|
||||
}
|
||||
}
|
||||
return (case_sensitive) ?
|
||||
utf8_charcmp (string1, string2) : utf8_charcasecmp (string1, string2);
|
||||
string_charcmp (string1, string2) :
|
||||
string_charcasecmp (string1, string2);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1984,7 +2077,7 @@ string_translate_chars (const char *string,
|
||||
ptr_chars2 = chars2;
|
||||
while (ptr_chars1 && ptr_chars1[0] && ptr_chars2 && ptr_chars2[0])
|
||||
{
|
||||
if (utf8_charcmp (ptr_chars1, ptr_string) == 0)
|
||||
if (string_charcmp (ptr_chars1, ptr_string) == 0)
|
||||
{
|
||||
string_dyn_concat (result, ptr_chars2, utf8_char_size (ptr_chars2));
|
||||
translated = 1;
|
||||
@@ -3736,7 +3829,7 @@ string_is_command_char (const char *string)
|
||||
|
||||
while (ptr_command_chars && ptr_command_chars[0])
|
||||
{
|
||||
if (utf8_charcmp (ptr_command_chars, string) == 0)
|
||||
if (string_charcmp (ptr_command_chars, string) == 0)
|
||||
return 1;
|
||||
ptr_command_chars = utf8_next_char (ptr_command_chars);
|
||||
}
|
||||
@@ -3798,7 +3891,7 @@ string_input_for_buffer (const char *string)
|
||||
return string;
|
||||
|
||||
/* check if first char is doubled: if yes, then it's not a command */
|
||||
if (utf8_charcmp (string, next_char) == 0)
|
||||
if (string_charcmp (string, next_char) == 0)
|
||||
return next_char;
|
||||
|
||||
/* string is a command */
|
||||
|
||||
@@ -44,6 +44,10 @@ extern char *string_reverse_screen (const char *string);
|
||||
extern char *string_repeat (const char *string, int count);
|
||||
extern char *string_tolower (const char *string);
|
||||
extern char *string_toupper (const char *string);
|
||||
extern int string_charcmp (const char *string1, const char *string2);
|
||||
extern int string_charcasecmp (const char *string1, const char *string2);
|
||||
extern int string_charcasecmp_range (const char *string1, const char *string2,
|
||||
int range);
|
||||
extern int string_strcasecmp (const char *string1, const char *string2);
|
||||
extern int string_strcasecmp_range (const char *string1, const char *string2,
|
||||
int range);
|
||||
|
||||
@@ -528,97 +528,6 @@ utf8_strlen_screen (const char *string)
|
||||
return size_screen;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two UTF-8 chars (case sensitive).
|
||||
*
|
||||
* Returns: arithmetic result of subtracting the first char in string2
|
||||
* from the first char in string1:
|
||||
* < 0: string1 < string2
|
||||
* 0: string1 == string2
|
||||
* > 0: string1 > string2
|
||||
*/
|
||||
|
||||
int
|
||||
utf8_charcmp (const char *string1, const char *string2)
|
||||
{
|
||||
return utf8_char_int (string1) - utf8_char_int (string2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two UTF-8 chars (case insensitive).
|
||||
*
|
||||
* Returns: arithmetic result of subtracting the first char in string2
|
||||
* (converted to lowercase) from the first char in string1 (converted
|
||||
* to lowercase):
|
||||
* < 0: string1 < string2
|
||||
* 0: string1 == string2
|
||||
* > 0: string1 > string2
|
||||
*/
|
||||
|
||||
int
|
||||
utf8_charcasecmp (const char *string1, const char *string2)
|
||||
{
|
||||
wint_t wchar1, wchar2;
|
||||
|
||||
/*
|
||||
* optimization for single-byte chars: only letters A-Z must be converted
|
||||
* to lowercase; this is faster than calling `towlower`
|
||||
*/
|
||||
if (string1 && !((unsigned char)(string1[0]) & 0x80)
|
||||
&& string2 && !((unsigned char)(string2[0]) & 0x80))
|
||||
{
|
||||
wchar1 = string1[0];
|
||||
if ((wchar1 >= 'A') && (wchar1 <= 'Z'))
|
||||
wchar1 += ('a' - 'A');
|
||||
wchar2 = string2[0];
|
||||
if ((wchar2 >= 'A') && (wchar2 <= 'Z'))
|
||||
wchar2 += ('a' - 'A');
|
||||
}
|
||||
else
|
||||
{
|
||||
wchar1 = towlower (utf8_char_int (string1));
|
||||
wchar2 = towlower (utf8_char_int (string2));
|
||||
}
|
||||
|
||||
return wchar1 - wchar2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compares two UTF-8 chars (case insensitive using a range).
|
||||
*
|
||||
* The range is the number of chars which can be converted from upper to lower
|
||||
* case. For example 26 = all letters of alphabet, 29 = all letters + 3 chars.
|
||||
*
|
||||
* Examples:
|
||||
* - range = 26: A-Z ==> a-z
|
||||
* - range = 29: A-Z [ \ ] ==> a-z { | }
|
||||
* - range = 30: A-Z [ \ ] ^ ==> a-z { | } ~
|
||||
* (ranges 29 and 30 are used by some protocols like IRC)
|
||||
*
|
||||
* Returns: arithmetic result of subtracting the last compared char in string2
|
||||
* (converted to lowercase) from the last compared char in string1 (converted
|
||||
* to lowercase):
|
||||
* < 0: string1 < string2
|
||||
* 0: string1 == string2
|
||||
* > 0: string1 > string2
|
||||
*/
|
||||
|
||||
int
|
||||
utf8_charcasecmp_range (const char *string1, const char *string2, int range)
|
||||
{
|
||||
wchar_t wchar1, wchar2;
|
||||
|
||||
wchar1 = utf8_char_int (string1);
|
||||
if ((wchar1 >= (wchar_t)'A') && (wchar1 < (wchar_t)('A' + range)))
|
||||
wchar1 += ('a' - 'A');
|
||||
|
||||
wchar2 = utf8_char_int (string2);
|
||||
if ((wchar2 >= (wchar_t)'A') && (wchar2 < (wchar_t)('A' + range)))
|
||||
wchar2 += ('a' - 'A');
|
||||
|
||||
return wchar1 - wchar2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Moves forward N chars in an UTF-8 string.
|
||||
*
|
||||
|
||||
@@ -41,10 +41,6 @@ extern int utf8_char_size (const char *string);
|
||||
extern int utf8_strlen (const char *string);
|
||||
extern int utf8_strnlen (const char *string, int bytes);
|
||||
extern int utf8_strlen_screen (const char *string);
|
||||
extern int utf8_charcmp (const char *string1, const char *string2);
|
||||
extern int utf8_charcasecmp (const char *string1, const char *string2);
|
||||
extern int utf8_charcasecmp_range (const char *string1, const char *string2,
|
||||
int range);
|
||||
extern int utf8_char_size_screen (const char *string);
|
||||
extern const char *utf8_add_offset (const char *string, int offset);
|
||||
extern int utf8_real_pos (const char *string, int pos);
|
||||
|
||||
@@ -1034,11 +1034,11 @@ gui_completion_common_prefix_size (struct t_arraylist *list,
|
||||
ptr_completion_word =
|
||||
(struct t_gui_completion_word *)(list->data[i]);
|
||||
if (!utf_char
|
||||
|| (utf8_charcasecmp (utf_char,
|
||||
ptr_completion_word->word) == 0))
|
||||
|| (string_charcasecmp (utf_char,
|
||||
ptr_completion_word->word) == 0))
|
||||
{
|
||||
if ((ptr_completion_word->word[ptr_char - ptr_first_item] == '\0')
|
||||
|| (utf8_charcasecmp (
|
||||
|| (string_charcasecmp (
|
||||
ptr_char,
|
||||
ptr_completion_word->word + (ptr_char - ptr_first_item)) != 0))
|
||||
{
|
||||
@@ -1112,7 +1112,7 @@ gui_completion_partial_build_list (struct t_gui_completion *completion,
|
||||
{
|
||||
ptr_completion_word =
|
||||
(struct t_gui_completion_word *)list_temp->data[index];
|
||||
if (utf8_charcasecmp (utf_char, ptr_completion_word->word) == 0)
|
||||
if (string_charcasecmp (utf_char, ptr_completion_word->word) == 0)
|
||||
{
|
||||
arraylist_remove (list_temp, index);
|
||||
items_count++;
|
||||
|
||||
+1
-1
@@ -731,7 +731,7 @@ gui_key_cmp (const char *key, const char *search, int context)
|
||||
|
||||
while (search[0])
|
||||
{
|
||||
diff = utf8_charcmp (key, search);
|
||||
diff = string_charcmp (key, search);
|
||||
if (diff != 0)
|
||||
return diff;
|
||||
key = utf8_next_char (key);
|
||||
|
||||
@@ -605,6 +605,8 @@ plugin_load (const char *filename, int init_plugin, int argc, char **argv)
|
||||
new_plugin->string_cut = &string_cut;
|
||||
new_plugin->string_tolower = &string_tolower;
|
||||
new_plugin->string_toupper = &string_toupper;
|
||||
new_plugin->string_charcmp = &string_charcmp;
|
||||
new_plugin->string_charcasecmp = &string_charcasecmp;
|
||||
new_plugin->strcasecmp = &string_strcasecmp;
|
||||
new_plugin->strcasecmp_range = &string_strcasecmp_range;
|
||||
new_plugin->strncasecmp = &string_strncasecmp;
|
||||
@@ -658,8 +660,6 @@ plugin_load (const char *filename, int init_plugin, int argc, char **argv)
|
||||
new_plugin->utf8_strlen = &utf8_strlen;
|
||||
new_plugin->utf8_strnlen = &utf8_strnlen;
|
||||
new_plugin->utf8_strlen_screen = &utf8_strlen_screen;
|
||||
new_plugin->utf8_charcmp = &utf8_charcmp;
|
||||
new_plugin->utf8_charcasecmp = &utf8_charcasecmp;
|
||||
new_plugin->utf8_char_size_screen = &utf8_char_size_screen;
|
||||
new_plugin->utf8_add_offset = &utf8_add_offset;
|
||||
new_plugin->utf8_real_pos = &utf8_real_pos;
|
||||
|
||||
@@ -701,7 +701,7 @@ trigger_regex_split (const char *str_regex,
|
||||
|
||||
/* search the delimiter (which can be more than one char) */
|
||||
pos = weechat_utf8_next_char (ptr_regex);
|
||||
while (pos[0] && (weechat_utf8_charcmp (ptr_regex, pos) == 0))
|
||||
while (pos[0] && (weechat_string_charcmp (ptr_regex, pos) == 0))
|
||||
{
|
||||
pos = weechat_utf8_next_char (pos);
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ struct timeval;
|
||||
* please change the date with current one; for a second change at same
|
||||
* date, increment the 01, otherwise please keep 01.
|
||||
*/
|
||||
#define WEECHAT_PLUGIN_API_VERSION "20221218-01"
|
||||
#define WEECHAT_PLUGIN_API_VERSION "20221224-01"
|
||||
|
||||
/* macros for defining plugin infos */
|
||||
#define WEECHAT_PLUGIN_NAME(__name) \
|
||||
@@ -289,6 +289,8 @@ struct t_weechat_plugin
|
||||
int screen, const char *cut_suffix);
|
||||
char *(*string_tolower) (const char *string);
|
||||
char *(*string_toupper) (const char *string);
|
||||
int (*string_charcmp) (const char *string1, const char *string2);
|
||||
int (*string_charcasecmp) (const char *string1, const char *string2);
|
||||
int (*strcasecmp) (const char *string1, const char *string2);
|
||||
int (*strcasecmp_range) (const char *string1, const char *string2,
|
||||
int range);
|
||||
@@ -372,8 +374,6 @@ struct t_weechat_plugin
|
||||
int (*utf8_strlen) (const char *string);
|
||||
int (*utf8_strnlen) (const char *string, int bytes);
|
||||
int (*utf8_strlen_screen) (const char *string);
|
||||
int (*utf8_charcmp) (const char *string1, const char *string2);
|
||||
int (*utf8_charcasecmp) (const char *string1, const char *string2);
|
||||
int (*utf8_char_size_screen) (const char *string);
|
||||
const char *(*utf8_add_offset) (const char *string, int offset);
|
||||
int (*utf8_real_pos) (const char *string, int pos);
|
||||
@@ -1229,6 +1229,10 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
|
||||
(weechat_plugin->string_tolower)(__string)
|
||||
#define weechat_string_toupper(__string) \
|
||||
(weechat_plugin->string_toupper)(__string)
|
||||
#define weechat_string_charcmp(__string1, __string2) \
|
||||
(weechat_plugin->string_charcmp)(__string1, __string2)
|
||||
#define weechat_string_charcasecmp(__string1, __string2) \
|
||||
(weechat_plugin->string_charcasecmp)(__string1, __string2)
|
||||
#define weechat_strcasecmp(__string1, __string2) \
|
||||
(weechat_plugin->strcasecmp)(__string1, __string2)
|
||||
#define weechat_strcasecmp_range(__string1, __string2, __range) \
|
||||
@@ -1365,10 +1369,6 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
|
||||
(weechat_plugin->utf8_strnlen)(__string, __bytes)
|
||||
#define weechat_utf8_strlen_screen(__string) \
|
||||
(weechat_plugin->utf8_strlen_screen)(__string)
|
||||
#define weechat_utf8_charcmp(__string1, __string2) \
|
||||
(weechat_plugin->utf8_charcmp)(__string1, __string2)
|
||||
#define weechat_utf8_charcasecmp(__string1, __string2) \
|
||||
(weechat_plugin->utf8_charcasecmp)(__string1, __string2)
|
||||
#define weechat_utf8_char_size_screen(__string) \
|
||||
(weechat_plugin->utf8_char_size_screen)(__string)
|
||||
#define weechat_utf8_add_offset(__string, __offset) \
|
||||
|
||||
@@ -455,6 +455,60 @@ TEST(CoreString, Repeat)
|
||||
STRCMP_EQUAL("noëlnoël", string_repeat ("noël", 2));
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* string_charcmp
|
||||
* string_charcasecmp
|
||||
* string_charcasecmp_range
|
||||
*/
|
||||
|
||||
TEST(CoreString, CharComparison)
|
||||
{
|
||||
/* case-sensitive comparison */
|
||||
LONGS_EQUAL(0, string_charcmp (NULL, NULL));
|
||||
LONGS_EQUAL(-97, string_charcmp (NULL, "abc"));
|
||||
LONGS_EQUAL(97, string_charcmp ("abc", NULL));
|
||||
LONGS_EQUAL(0, string_charcmp ("axx", "azz"));
|
||||
LONGS_EQUAL(-2, string_charcmp ("A", "C"));
|
||||
LONGS_EQUAL(2, string_charcmp ("C", "A"));
|
||||
LONGS_EQUAL(-32, string_charcmp ("A", "a"));
|
||||
LONGS_EQUAL(-8129, string_charcmp ("ë", "€"));
|
||||
LONGS_EQUAL(235, string_charcmp ("ë", ""));
|
||||
LONGS_EQUAL(-235, string_charcmp ("", "ë"));
|
||||
|
||||
/* case-insensitive comparison */
|
||||
LONGS_EQUAL(0, string_charcasecmp (NULL, NULL));
|
||||
LONGS_EQUAL(-97, string_charcasecmp (NULL, "abc"));
|
||||
LONGS_EQUAL(97, string_charcasecmp ("abc", NULL));
|
||||
LONGS_EQUAL(0, string_charcasecmp ("axx", "azz"));
|
||||
LONGS_EQUAL(-2, string_charcasecmp ("A", "C"));
|
||||
LONGS_EQUAL(2, string_charcasecmp ("C", "A"));
|
||||
LONGS_EQUAL(0, string_charcasecmp ("A", "a"));
|
||||
LONGS_EQUAL(-8129, string_charcasecmp ("ë", "€"));
|
||||
|
||||
/* case-insensitive comparison with a range */
|
||||
LONGS_EQUAL(0, string_charcasecmp_range (NULL, NULL, 30));
|
||||
LONGS_EQUAL(-97, string_charcasecmp_range (NULL, "abc", 30));
|
||||
LONGS_EQUAL(97, string_charcasecmp_range ("abc", NULL, 30));
|
||||
LONGS_EQUAL(0, string_charcasecmp_range ("axx", "azz", 30));
|
||||
LONGS_EQUAL(-2, string_charcasecmp_range ("A", "C", 30));
|
||||
LONGS_EQUAL(2, string_charcasecmp_range ("C", "A", 30));
|
||||
LONGS_EQUAL(0, string_charcasecmp_range ("A", "a", 30));
|
||||
LONGS_EQUAL(-8129, string_charcasecmp_range ("ë", "€", 30));
|
||||
LONGS_EQUAL(0, string_charcasecmp_range ("[", "{", 30));
|
||||
LONGS_EQUAL(0, string_charcasecmp_range ("]", "}", 30));
|
||||
LONGS_EQUAL(0, string_charcasecmp_range ("\\", "|", 30));
|
||||
LONGS_EQUAL(0, string_charcasecmp_range ("^", "~", 30));
|
||||
LONGS_EQUAL(-32, string_charcasecmp_range ("[", "{", 26));
|
||||
LONGS_EQUAL(32, string_charcasecmp_range ("{", "[", 26));
|
||||
LONGS_EQUAL(-32, string_charcasecmp_range ("]", "}", 26));
|
||||
LONGS_EQUAL(32, string_charcasecmp_range ("}", "]", 26));
|
||||
LONGS_EQUAL(-32, string_charcasecmp_range ("\\", "|", 26));
|
||||
LONGS_EQUAL(32, string_charcasecmp_range ("|", "\\", 26));
|
||||
LONGS_EQUAL(-32, string_charcasecmp_range ("^", "~", 26));
|
||||
LONGS_EQUAL(32, string_charcasecmp_range ("~", "^", 26));
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* string_strcasecmp
|
||||
@@ -464,7 +518,7 @@ TEST(CoreString, Repeat)
|
||||
* string_strcmp_ignore_chars
|
||||
*/
|
||||
|
||||
TEST(CoreString, Comparison)
|
||||
TEST(CoreString, StringComparison)
|
||||
{
|
||||
/* case-insensitive comparison */
|
||||
LONGS_EQUAL(0, string_strcasecmp (NULL, NULL));
|
||||
|
||||
@@ -591,60 +591,6 @@ TEST(CoreUtf8, Size)
|
||||
config_file_option_reset (config_look_tab_width, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* utf8_charcmp
|
||||
* utf8_charcasecmp
|
||||
* utf8_charcasecmp_range
|
||||
*/
|
||||
|
||||
TEST(CoreUtf8, Comparison)
|
||||
{
|
||||
/* case-sensitive comparison */
|
||||
LONGS_EQUAL(0, utf8_charcmp (NULL, NULL));
|
||||
LONGS_EQUAL(-97, utf8_charcmp (NULL, "abc"));
|
||||
LONGS_EQUAL(97, utf8_charcmp ("abc", NULL));
|
||||
LONGS_EQUAL(0, utf8_charcmp ("axx", "azz"));
|
||||
LONGS_EQUAL(-2, utf8_charcmp ("A", "C"));
|
||||
LONGS_EQUAL(2, utf8_charcmp ("C", "A"));
|
||||
LONGS_EQUAL(-32, utf8_charcmp ("A", "a"));
|
||||
LONGS_EQUAL(-8129, utf8_charcmp ("ë", "€"));
|
||||
LONGS_EQUAL(235, utf8_charcmp ("ë", ""));
|
||||
LONGS_EQUAL(-235, utf8_charcmp ("", "ë"));
|
||||
|
||||
/* case-insensitive comparison */
|
||||
LONGS_EQUAL(0, utf8_charcasecmp (NULL, NULL));
|
||||
LONGS_EQUAL(-97, utf8_charcasecmp (NULL, "abc"));
|
||||
LONGS_EQUAL(97, utf8_charcasecmp ("abc", NULL));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp ("axx", "azz"));
|
||||
LONGS_EQUAL(-2, utf8_charcasecmp ("A", "C"));
|
||||
LONGS_EQUAL(2, utf8_charcasecmp ("C", "A"));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp ("A", "a"));
|
||||
LONGS_EQUAL(-8129, utf8_charcasecmp ("ë", "€"));
|
||||
|
||||
/* case-insensitive comparison with a range */
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range (NULL, NULL, 30));
|
||||
LONGS_EQUAL(-97, utf8_charcasecmp_range (NULL, "abc", 30));
|
||||
LONGS_EQUAL(97, utf8_charcasecmp_range ("abc", NULL, 30));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range ("axx", "azz", 30));
|
||||
LONGS_EQUAL(-2, utf8_charcasecmp_range ("A", "C", 30));
|
||||
LONGS_EQUAL(2, utf8_charcasecmp_range ("C", "A", 30));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range ("A", "a", 30));
|
||||
LONGS_EQUAL(-8129, utf8_charcasecmp_range ("ë", "€", 30));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range ("[", "{", 30));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range ("]", "}", 30));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range ("\\", "|", 30));
|
||||
LONGS_EQUAL(0, utf8_charcasecmp_range ("^", "~", 30));
|
||||
LONGS_EQUAL(-32, utf8_charcasecmp_range ("[", "{", 26));
|
||||
LONGS_EQUAL(32, utf8_charcasecmp_range ("{", "[", 26));
|
||||
LONGS_EQUAL(-32, utf8_charcasecmp_range ("]", "}", 26));
|
||||
LONGS_EQUAL(32, utf8_charcasecmp_range ("}", "]", 26));
|
||||
LONGS_EQUAL(-32, utf8_charcasecmp_range ("\\", "|", 26));
|
||||
LONGS_EQUAL(32, utf8_charcasecmp_range ("|", "\\", 26));
|
||||
LONGS_EQUAL(-32, utf8_charcasecmp_range ("^", "~", 26));
|
||||
LONGS_EQUAL(32, utf8_charcasecmp_range ("~", "^", 26));
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests functions:
|
||||
* utf8_strndup
|
||||
|
||||
Reference in New Issue
Block a user