2023-07-18 Bruno Haible <bruno@clisp.org>
+ 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.
/* Specification. */
#include <string.h>
-#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. */
&& (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