int unicode_lbc_next(unicode_lbc_info_t i, unicode_char ch) { if (i->buf_ptr >= unicode_buf_len(&i->buf)) { i->buf_ptr=0; unicode_buf_clear(&i->buf); } unicode_buf_append(&i->buf, &ch, 1); return unicode_lb_next(i->handle, ch); }
void unicode_buf_append_char(struct unicode_buf *dst, const char *str, size_t cnt) { unicode_char unicode_buf[256]; while (cnt) { size_t n=sizeof(unicode_buf)/sizeof(unicode_buf[0]), i; if (n > cnt) n=cnt; for (i=0; i<n; ++i) unicode_buf[i]=(unsigned char)str[i]; str += n; cnt -= n; unicode_buf_append(dst, unicode_buf, i); } }