ufold

Прелама сваки UTF-8 улазни ред да стане у задату дужину
git clone https://git.sr.ht/~strahinja/ufold
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

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);