From aa13090b66d7ee1ffc68ad242c6419a83cf364d9 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Wed, 12 Dec 2012 11:25:58 +0000 Subject: started an official API to the C runtime --- src/runtime/c/gu/utf8.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/runtime/c/gu/utf8.c') diff --git a/src/runtime/c/gu/utf8.c b/src/runtime/c/gu/utf8.c index b1d5996c2..fb0f2c150 100644 --- a/src/runtime/c/gu/utf8.c +++ b/src/runtime/c/gu/utf8.c @@ -1,6 +1,6 @@ #include #include -#include +#include "config.h" GuUCS gu_utf8_decode(const uint8_t** src_inout) @@ -73,7 +73,6 @@ fail: return 0; } - size_t gu_advance_utf8(GuUCS ucs, uint8_t* buf) { @@ -105,6 +104,19 @@ gu_in_utf8_char_(GuIn* in, GuExn* err) return gu_ucs_char(gu_in_utf8(in, err), err); } +char +gu_in_utf8_char(GuIn* in, GuExn* err) +{ +#ifdef CHAR_ASCII + int i = gu_in_peek_u8(in); + if (i >= 0 && i < 0x80) { + gu_in_consume(in, 1); + return (char) i; + } +#endif + return gu_in_utf8_char_(in, err); +} + void gu_out_utf8_long_(GuUCS ucs, GuOut* out, GuExn* err) { @@ -210,11 +222,17 @@ void gu_str_out_utf8_(const char* str, GuOut* out, GuExn* err) #endif -extern inline void -gu_str_out_utf8(const char* str, GuOut* out, GuExn* err); - extern inline GuUCS gu_in_utf8(GuIn* in, GuExn* err); -extern inline char -gu_in_utf8_char(GuIn* in, GuExn* err); +void +gu_str_out_utf8(const char* str, GuOut* out, GuExn* err) +{ +#ifdef CHAR_ASCII + gu_out_bytes(out, (const uint8_t*) str, strlen(str), err); +#else + extern void + gu_str_out_utf8_(const char* str, GuOut* out, GuExn* err); + gu_str_out_utf8_(str, out, err); +#endif +} -- cgit v1.2.3