From 056967bada64e9e4f79b8ad3aac1ce6db823b541 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 18 Jul 2023 13:40:11 +0200 Subject: [PATCH] mbspcasecmp: Optimize. * lib/mbspcasecmp.c: Include mbuiterf.h instead of mbuiter.h. (mbspcasecmp): Use mbuif_* macros instead of mbui_* macros. * modules/mbspcasecmp (Depends-on): Add mbuiterf. Remove mbuiter. --- ChangeLog | 5 +++++ lib/mbspcasecmp.c | 28 +++++++++++++++++----------- modules/mbspcasecmp | 2 +- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index f7a201f46e..ec0fa50d61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2023-07-18 Bruno Haible + mbspcasecmp: Optimize. + * lib/mbspcasecmp.c: Include mbuiterf.h instead of mbuiter.h. + (mbspcasecmp): Use mbuif_* macros instead of mbui_* macros. + * modules/mbspcasecmp (Depends-on): Add mbuiterf. Remove mbuiter. + mbsncasecmp: Optimize. * lib/mbsncasecmp.c: Include mbuiterf.h instead of mbuiter.h. (mbsncasecmp): Use mbuif_* macros instead of mbui_* macros. diff --git a/lib/mbspcasecmp.c b/lib/mbspcasecmp.c index 403d4ebb79..b7c3d85c96 100644 --- a/lib/mbspcasecmp.c +++ b/lib/mbspcasecmp.c @@ -22,7 +22,7 @@ #include -#include "mbuiter.h" +#include "mbuiterf.h" #define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) @@ -46,25 +46,31 @@ mbspcasecmp (const char *string, const char *prefix) 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 = string; - mbui_init (iter1, string); - mbui_init (iter2, prefix); + mbuif_state_t state2; + const char *iter2; + mbuif_init (state2); + iter2 = prefix; - 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 NULL; - mbui_advance (iter1); - mbui_advance (iter2); + iter1 += mb_len (cur1); + iter2 += mb_len (cur2); } - if (!mbui_avail (iter2)) + if (!mbuif_avail (state2, iter2)) /* PREFIX equals STRING or is terminated before STRING. */ - return (char *) mbui_cur_ptr (iter1); + return (char *) iter1; else /* STRING terminated before PREFIX. */ return NULL; diff --git a/modules/mbspcasecmp b/modules/mbspcasecmp index 32f95024f8..7f2b463aaa 100644 --- a/modules/mbspcasecmp +++ b/modules/mbspcasecmp @@ -5,7 +5,7 @@ Files: lib/mbspcasecmp.c Depends-on: -mbuiter +mbuiterf string configure.ac: -- 2.39.5