literal_unicode.h (882B)
1 #ifndef KIT_C_PARSE_LITERAL_UNICODE_H 2 #define KIT_C_PARSE_LITERAL_UNICODE_H 3 4 #include "c_support.h" 5 6 typedef enum CLitUnitKind { 7 C_LIT_UNIT_CODEPOINT, 8 C_LIT_UNIT_NUMERIC, 9 } CLitUnitKind; 10 11 typedef struct CLitUnit { 12 u32 value; 13 u8 kind; 14 } CLitUnit; 15 16 typedef enum CLitStringEnc { 17 C_LIT_STR_ORDINARY, 18 C_LIT_STR_UTF8, 19 C_LIT_STR_UTF16, 20 C_LIT_STR_UTF32, 21 } CLitStringEnc; 22 23 int c_lit_decode_unit(const char* s, size_t len, size_t* pi, CLitUnit* out, 24 const char** err_out); 25 int c_lit_append_string_unit(u8* dst, size_t* pk, CLitStringEnc enc, 26 u32 elem_size, CLitUnit unit, 27 const char** err_out); 28 int c_lit_encode_char_unit(CLitStringEnc enc, u32 elem_bits, CLitUnit unit, 29 u32* out, const char** err_out); 30 void c_lit_encode_uint_le(u8* dst, u32 size, u32 value); 31 32 #endif