Lines Matching refs:iter
25 char *iter;
26 for (iter = buf; *iter != '\0'; iter++)
28 do_something (*iter);
33 mbui_iterator_t iter;
34 for (mbui_init (iter, buf); mbui_avail (iter); mbui_advance (iter))
36 do_something (mbui_cur_ptr (iter), mb_len (mbui_cur (iter)));
55 mbui_init (iter, startptr)
58 mbui_avail (iter)
60 the end of string is reached. In this case, mbui_cur (iter) is
63 mbui_advance (iter)
66 mbui_cur (iter)
70 mbui_cur_ptr (iter)
73 mbui_reloc (iter, ptrdiff)
78 extern void mbui_init (mbui_iterator_t iter, const char *startptr);
79 extern bool mbui_avail (mbui_iterator_t iter);
80 extern void mbui_advance (mbui_iterator_t iter);
81 extern mbchar_t mbui_cur (mbui_iterator_t iter);
82 extern const char * mbui_cur_ptr (mbui_iterator_t iter);
83 extern void mbui_reloc (mbui_iterator_t iter, ptrdiff_t ptrdiff);
119 mbuiter_multi_next (struct mbuiter_multi *iter)
121 if (iter->next_done)
123 if (iter->in_shift)
126 if (is_basic (*iter->cur.ptr))
131 iter->cur.bytes = 1;
132 iter->cur.wc = *iter->cur.ptr;
133 iter->cur.wc_valid = true;
137 assert (mbsinit (&iter->state));
138 iter->in_shift = true;
140 iter->cur.bytes = mbrtowc (&iter->cur.wc, iter->cur.ptr,
141 strnlen1 (iter->cur.ptr, MB_CUR_MAX),
142 &iter->state);
143 if (iter->cur.bytes == (size_t) -1)
146 iter->cur.bytes = 1;
147 iter->cur.wc_valid = false;
148 /* Whether to set iter->in_shift = false and reset iter->state
151 else if (iter->cur.bytes == (size_t) -2)
154 iter->cur.bytes = strlen (iter->cur.ptr);
155 iter->cur.wc_valid = false;
156 /* Whether to set iter->in_shift = false and reset iter->state
161 if (iter->cur.bytes == 0)
164 iter->cur.bytes = 1;
165 assert (*iter->cur.ptr == '\0');
166 assert (iter->cur.wc == 0);
168 iter->cur.wc_valid = true;
172 if (mbsinit (&iter->state))
173 iter->in_shift = false;
176 iter->next_done = true;
180 mbuiter_multi_reloc (struct mbuiter_multi *iter, ptrdiff_t ptrdiff)
182 iter->cur.ptr += ptrdiff;
187 #define mbui_init(iter, startptr) \
188 ((iter).cur.ptr = (startptr), \
189 (iter).in_shift = false, memset (&(iter).state, '\0', sizeof (mbstate_t)), \
190 (iter).next_done = false)
191 #define mbui_avail(iter) \
192 (mbuiter_multi_next (&(iter)), !mb_isnul ((iter).cur))
193 #define mbui_advance(iter) \
194 ((iter).cur.ptr += (iter).cur.bytes, (iter).next_done = false)
197 #define mbui_cur(iter) (iter).cur
198 #define mbui_cur_ptr(iter) (iter).cur.ptr
201 #define mbui_reloc(iter, ptrdiff) mbuiter_multi_reloc (&iter, ptrdiff)