2 * UCW Library: Reading and writing of UTF-8 on Fastbuf Streams
4 * (c) 2001--2004 Martin Mares <mj@ucw.cz>
5 * (c) 2004 Robert Spalek <robert@ucw.cz>
7 * This software may be freely distributed and used according to the terms
8 * of the GNU Lesser General Public License.
11 #ifndef _UCW_FF_UTF8_H
12 #define _UCW_FF_UTF8_H
14 #include "lib/fastbuf.h"
15 #include "lib/unicode.h"
17 int bget_utf8_slow(struct fastbuf *b, uns repl);
18 int bget_utf8_32_slow(struct fastbuf *b, uns repl);
19 void bput_utf8_slow(struct fastbuf *b, uns u);
20 void bput_utf8_32_slow(struct fastbuf *b, uns u);
21 int bget_utf16_be_slow(struct fastbuf *b, uns repl);
22 int bget_utf16_le_slow(struct fastbuf *b, uns repl);
25 bget_utf8_repl(struct fastbuf *b, uns repl)
30 b->bptr = utf8_get_repl(b->bptr, &u, repl);
34 return bget_utf8_slow(b, repl);
38 bget_utf8_32_repl(struct fastbuf *b, uns repl)
43 b->bptr = utf8_32_get_repl(b->bptr, &u, repl);
47 return bget_utf8_32_slow(b, repl);
51 bget_utf8(struct fastbuf *b)
53 return bget_utf8_repl(b, UNI_REPLACEMENT);
57 bget_utf8_32(struct fastbuf *b)
59 return bget_utf8_32_repl(b, UNI_REPLACEMENT);
63 bput_utf8(struct fastbuf *b, uns u)
67 b->bptr = utf8_put(b->bptr, u);
73 bput_utf8_32(struct fastbuf *b, uns u)
77 b->bptr = utf8_32_put(b->bptr, u);
79 bput_utf8_32_slow(b, u);
83 bget_utf16_be_repl(struct fastbuf *b, uns repl)
88 b->bptr = utf16_be_get_repl(b->bptr, &u, repl);
92 return bget_utf16_be_slow(b, repl);
96 bget_utf16_le_repl(struct fastbuf *b, uns repl)
101 b->bptr = utf16_le_get_repl(b->bptr, &u, repl);
105 return bget_utf16_le_slow(b, repl);
109 bget_utf16_be(struct fastbuf *b)
111 return bget_utf16_be_repl(b, UNI_REPLACEMENT);
115 bget_utf16_le(struct fastbuf *b)
117 return bget_utf16_le_repl(b, UNI_REPLACEMENT);