From f0c22a20ccc90955ba0009457025c9ff34889181 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 18 Jul 2023 13:29:14 +0200 Subject: [PATCH] mbschr: Optimize. * lib/mbschr.c: Include mbuiterf.h instead of mbuiter.h. (mbschr): Use mbuif_* macros instead of mbui_* macros. * modules/mbschr (Depends-on): Add mbuiterf. Remove mbuiter. --- ChangeLog | 5 +++++ lib/mbschr.c | 17 +++++++++-------- modules/mbschr | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d1b135958c..de7744f0ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2023-07-18 Bruno Haible + mbschr: Optimize. + * lib/mbschr.c: Include mbuiterf.h instead of mbuiter.h. + (mbschr): Use mbuif_* macros instead of mbui_* macros. + * modules/mbschr (Depends-on): Add mbuiterf. Remove mbuiter. + mbslen: Optimize. * lib/mbslen.c: Include mbuiterf.h instead of mbuiter.h. (mbslen): Use mbuif_* macros instead of mbui_* macros. diff --git a/lib/mbschr.c b/lib/mbschr.c index 81323b4f9d..330e3f1c75 100644 --- a/lib/mbschr.c +++ b/lib/mbschr.c @@ -20,7 +20,7 @@ /* Specification. */ #include -#include "mbuiter.h" +#include "mbuiterf.h" /* Locate the first single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. */ @@ -33,17 +33,18 @@ mbschr (const char *string, int c) the faster unibyte loop can be used. */ && (unsigned char) c >= 0x30) { - mbui_iterator_t iter; - - for (mbui_init (iter, string);; mbui_advance (iter)) + mbuif_state_t state; + const char *iter; + for (mbuif_init (state), iter = string;; ) { - if (!mbui_avail (iter)) + if (!mbuif_avail (state, iter)) goto notfound; - if (mb_len (mbui_cur (iter)) == 1 - && (unsigned char) * mbui_cur_ptr (iter) == (unsigned char) c) + mbchar_t cur = mbuif_next (state, iter); + if (mb_len (cur) == 1 && (unsigned char) *iter == (unsigned char) c) break; + iter += mb_len (cur); } - return (char *) mbui_cur_ptr (iter); + return (char *) iter; notfound: return NULL; } diff --git a/modules/mbschr b/modules/mbschr index e3382e08b4..e99a3caf6c 100644 --- a/modules/mbschr +++ b/modules/mbschr @@ -5,7 +5,7 @@ Files: lib/mbschr.c Depends-on: -mbuiter +mbuiterf string configure.ac: -- 2.39.5