utf8.h (1216B)
1 /* This program is licensed under the terms of GNU GPL v3 or (at your option) 2 * any later version. Copyright (C) 2021-2025 Страхиња Радић. 3 * See the file LICENSE for exact copyright and license details. */ 4 5 #include <stdint.h> 6 #include <sys/types.h> 7 8 #define XMASK1 0x7F /* b01111111 */ 9 #define XMASK2 0x1F /* b00011111 */ 10 #define XMASK3 0x0F /* b00001111 */ 11 #define XMASK4 0x07 /* b00000111 */ 12 #define XMASK5 0x03 /* b00000011 */ 13 #define XMASK6 0x01 /* b00000001 */ 14 15 #define XMASKR 0x3F /* b00111111 */ 16 17 /* 18 #define BOUND1 0x0*/ 19 #define BOUND2 0x80 20 #define BOUND3 0x800 21 #define BOUND4 0x10000 22 #define BOUND5 0x200000 23 #define BOUND6 0x800000 24 25 #define START1 0x00 /* b0xxxxxxx */ 26 #define START2 0xC0 /* b110xxxxx */ 27 #define START3 0xE0 /* b1110xxxx */ 28 #define START4 0xF0 /* b11110xxx */ 29 #define START5 0xF8 /* b111110xx */ 30 #define START6 0xFC /* b1111110x */ 31 32 #define STARTR 0x80 /* b10xxxxxx */ 33 34 typedef uint8_t u8; 35 typedef uint32_t u32; 36 37 int u8_char_to_u32(u32* to, const u8* from, size_t* from_delta); 38 size_t u32_char_to_u8(u8* to, const u32 from); 39 int u8_to_u32(u32* to, const u8* from, size_t* from_delta); 40 size_t u32_to_u8(u8* to, const u32* from); 41 size_t u32_strlen(const u32* s);