From 727a6fd3c20fc8a5f175976b3b624b8f9ed3750e Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 18 Jul 2023 13:30:18 +0200 Subject: [PATCH] mbsrchr: Optimize. * lib/mbsrchr.c: Include mbuiterf.h instead of mbuiter.h. (mbsrchr): Use mbuif_* macros instead of mbui_* macros. * modules/mbsrchr (Depends-on): Add mbuiterf. Remove mbuiter. --- ChangeLog | 5 +++++ lib/mbsrchr.c | 15 +++++++++------ modules/mbsrchr | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index de7744f0ef..c0288b7ebc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2023-07-18 Bruno Haible + mbsrchr: Optimize. + * lib/mbsrchr.c: Include mbuiterf.h instead of mbuiter.h. + (mbsrchr): Use mbuif_* macros instead of mbui_* macros. + * modules/mbsrchr (Depends-on): Add mbuiterf. Remove mbuiter. + mbschr: Optimize. * lib/mbschr.c: Include mbuiterf.h instead of mbuiter.h. (mbschr): Use mbuif_* macros instead of mbui_* macros. diff --git a/lib/mbsrchr.c b/lib/mbsrchr.c index a00b608fc8..4c4767462c 100644 --- a/lib/mbsrchr.c +++ b/lib/mbsrchr.c @@ -20,7 +20,7 @@ /* Specification. */ #include -#include "mbuiter.h" +#include "mbuiterf.h" /* Locate the last single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. */ @@ -34,14 +34,17 @@ mbsrchr (const char *string, int c) && (unsigned char) c >= 0x30) { const char *result = NULL; - 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 - && (unsigned char) * mbui_cur_ptr (iter) == (unsigned char) c) - result = mbui_cur_ptr (iter); + mbchar_t cur = mbuif_next (state, iter); + if (mb_len (cur) == 1 && (unsigned char) *iter == (unsigned char) c) + result = iter; + iter += mb_len (cur); } + return (char *) result; } else diff --git a/modules/mbsrchr b/modules/mbsrchr index fcf5681864..56b9ed9489 100644 --- a/modules/mbsrchr +++ b/modules/mbsrchr @@ -5,7 +5,7 @@ Files: lib/mbsrchr.c Depends-on: -mbuiter +mbuiterf string configure.ac: -- 2.39.5