From: Bruno Haible Date: Tue, 18 Jul 2023 11:36:00 +0000 (+0200) Subject: mbsncasecmp: Optimize. X-Git-Tag: v1.0~1068 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d2865eb45ebe658c15019e464bc18abe3b6ecc07;p=gnulib.git mbsncasecmp: Optimize. * lib/mbsncasecmp.c: Include mbuiterf.h instead of mbuiter.h. (mbsncasecmp): Use mbuif_* macros instead of mbui_* macros. * modules/mbsncasecmp (Depends-on): Add mbuiterf. Remove mbuiter. --- diff --git a/ChangeLog b/ChangeLog index 92d747f4e7..f7a201f46e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2023-07-18 Bruno Haible + mbsncasecmp: Optimize. + * lib/mbsncasecmp.c: Include mbuiterf.h instead of mbuiter.h. + (mbsncasecmp): Use mbuif_* macros instead of mbui_* macros. + * modules/mbsncasecmp (Depends-on): Add mbuiterf. Remove mbuiter. + mbscasecmp: Optimize. * lib/mbscasecmp.c: Include mbuiterf.h instead of mbuiter.h. (mbscasecmp): Use mbuif_* macros instead of mbui_* macros. diff --git a/lib/mbsncasecmp.c b/lib/mbsncasecmp.c index b2dcb81417..d7b71ad188 100644 --- a/lib/mbsncasecmp.c +++ b/lib/mbsncasecmp.c @@ -24,7 +24,7 @@ #include #include -#include "mbuiter.h" +#include "mbuiterf.h" #define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) @@ -46,15 +46,21 @@ mbsncasecmp (const char *s1, const char *s2, size_t n) most often already in the very few first characters. */ if (MB_CUR_MAX > 1) { - mbui_iterator_t iter1; - mbui_iterator_t iter2; + mbuif_state_t state1; + const char *iter1; + mbuif_init (state1); + iter1 = s1; - mbui_init (iter1, s1); - mbui_init (iter2, s2); + mbuif_state_t state2; + const char *iter2; + mbuif_init (state2); + iter2 = s2; - while (mbui_avail (iter1) && mbui_avail (iter2)) + while (mbuif_avail (state1, iter1) && mbuif_avail (state2, iter2)) { - int cmp = mb_casecmp (mbui_cur (iter1), mbui_cur (iter2)); + mbchar_t cur1 = mbuif_next (state1, iter1); + mbchar_t cur2 = mbuif_next (state2, iter2); + int cmp = mb_casecmp (cur1, cur2); if (cmp != 0) return cmp; @@ -62,13 +68,13 @@ mbsncasecmp (const char *s1, const char *s2, size_t n) if (--n == 0) return 0; - mbui_advance (iter1); - mbui_advance (iter2); + iter1 += mb_len (cur1); + iter2 += mb_len (cur2); } - if (mbui_avail (iter1)) + if (mbuif_avail (state1, iter1)) /* s2 terminated before s1 and n. */ return 1; - if (mbui_avail (iter2)) + if (mbuif_avail (state2, iter2)) /* s1 terminated before s2 and n. */ return -1; return 0; diff --git a/modules/mbsncasecmp b/modules/mbsncasecmp index 6f4300d3b7..9d6e2af5ce 100644 --- a/modules/mbsncasecmp +++ b/modules/mbsncasecmp @@ -5,7 +5,7 @@ Files: lib/mbsncasecmp.c Depends-on: -mbuiter +mbuiterf string configure.ac: