From: Bruno Haible Date: Tue, 18 Jul 2023 11:43:38 +0000 (+0200) Subject: mbspbrk: Optimize. X-Git-Tag: v1.0~1066 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=8d9d6ad81916045d199acf1cd9ddc107ffd87544;p=gnulib.git mbspbrk: Optimize. * lib/mbspbrk.c: Include mbuiterf.h instead of mbuiter.h. (mbspbrk): Use mbuif_* macros instead of mbui_* macros. * modules/mbspbrk (Depends-on): Add mbuiterf. Remove mbuiter. --- diff --git a/ChangeLog b/ChangeLog index ec0fa50d61..31ab6508b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2023-07-18 Bruno Haible + mbspbrk: Optimize. + * lib/mbspbrk.c: Include mbuiterf.h instead of mbuiter.h. + (mbspbrk): Use mbuif_* macros instead of mbui_* macros. + * modules/mbspbrk (Depends-on): Add mbuiterf. Remove mbuiter. + mbspcasecmp: Optimize. * lib/mbspcasecmp.c: Include mbuiterf.h instead of mbuiter.h. (mbspcasecmp): Use mbuif_* macros instead of mbui_* macros. diff --git a/lib/mbspbrk.c b/lib/mbspbrk.c index 6132ec1489..9482eb00cb 100644 --- a/lib/mbspbrk.c +++ b/lib/mbspbrk.c @@ -20,7 +20,7 @@ /* Specification. */ #include -#include "mbuiter.h" +#include "mbuiterf.h" /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the pointer to it, or NULL if none @@ -36,25 +36,30 @@ mbspbrk (const char *string, const char *accept) /* General case. */ if (MB_CUR_MAX > 1) { - mbui_iterator_t iter; - - for (mbui_init (iter, string); mbui_avail (iter); mbui_advance (iter)) + mbuif_state_t state; + const char *iter; + for (mbuif_init (state), iter = string; mbuif_avail (state, iter); ) { - if (mb_len (mbui_cur (iter)) == 1) + mbchar_t cur = mbuif_next (state, iter); + if (mb_len (cur) == 1) { - if (mbschr (accept, * mbui_cur_ptr (iter))) - return (char *) mbui_cur_ptr (iter); + if (mbschr (accept, *iter)) + return (char *) iter; } else { - mbui_iterator_t aiter; - - for (mbui_init (aiter, accept); - mbui_avail (aiter); - mbui_advance (aiter)) - if (mb_equal (mbui_cur (aiter), mbui_cur (iter))) - return (char *) mbui_cur_ptr (iter); + mbuif_state_t astate; + const char *aiter; + for (mbuif_init (astate), aiter = accept; + mbuif_avail (astate, aiter); ) + { + mbchar_t acur = mbuif_next (astate, aiter); + if (mb_equal (acur, cur)) + return (char *) iter; + aiter += mb_len (acur); + } } + iter += mb_len (cur); } return NULL; } diff --git a/modules/mbspbrk b/modules/mbspbrk index 2841721312..158f55caa8 100644 --- a/modules/mbspbrk +++ b/modules/mbspbrk @@ -5,7 +5,7 @@ Files: lib/mbspbrk.c Depends-on: -mbuiter +mbuiterf string mbschr strpbrk