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