ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
utf8.h
Go to the documentation of this file.
1
42#pragma once
43
44#include <stdint.h>
45#include <stddef.h>
46#include <stdbool.h>
47#include <stdio.h>
48
49/* ============================================================================
50 * UTF-8 Decoding Functions
51 * ========================================================================== */
52
85int utf8_decode(const uint8_t *s, uint32_t *codepoint);
86
87/* ============================================================================
88 * UTF-8 Display Width Calculation
89 * ========================================================================== */
90
123int utf8_display_width(const char *str);
124
146int utf8_display_width_n(const char *str, size_t max_bytes);
147
148/* ============================================================================
149 * UTF-8 Validation Functions
150 * ========================================================================== */
151
174bool utf8_is_valid(const char *str);
175
202bool utf8_is_ascii_only(const char *str);
203
234size_t utf8_char_count(const char *str);
235
276size_t utf8_to_codepoints(const char *str, uint32_t *out_codepoints, size_t max_codepoints);
277
303int utf8_next_char_bytes(const char *str, size_t max_bytes);
304
339int utf8_continuation_bytes_needed(unsigned char first_byte);
340
373int utf8_read_and_insert_continuation_bytes(char *buffer, size_t *cursor, size_t *len, size_t max_len,
374 int continuation_bytes, int (*read_byte_fn)(void));
375
376/* ============================================================================
377 * UTF-8 String Search Functions
378 * ========================================================================== */
379
413const char *utf8_strcasestr(const char *haystack, const char *needle);
414
450void utf8_write_lowercase(FILE *output, const char *text);
unsigned int uint32_t
Definition common.h:58
unsigned char uint8_t
Definition common.h:56
int utf8_display_width_n(const char *str, size_t max_bytes)
Calculate terminal display width of a UTF-8 string up to byte limit.
Definition utf8.c:91
bool utf8_is_ascii_only(const char *str)
Check if a string contains only ASCII characters.
Definition utf8.c:165
bool utf8_is_valid(const char *str)
Check if a string is valid UTF-8.
Definition utf8.c:156
int utf8_decode(const uint8_t *s, uint32_t *codepoint)
Decode a UTF-8 sequence to a Unicode codepoint.
Definition utf8.c:18
size_t utf8_to_codepoints(const char *str, uint32_t *out_codepoints, size_t max_codepoints)
Convert UTF-8 string to array of Unicode codepoints.
Definition utf8.c:185
void utf8_write_lowercase(FILE *output, const char *text)
Write UTF-8 string to file with ASCII lowercase conversion.
Definition utf8.c:360
int utf8_display_width(const char *str)
Calculate terminal display width of a UTF-8 string.
Definition utf8.c:46
int utf8_read_and_insert_continuation_bytes(char *buffer, size_t *cursor, size_t *len, size_t max_len, int continuation_bytes, int(*read_byte_fn)(void))
Read continuation bytes and insert them into buffer at cursor position.
Definition utf8.c:238
int utf8_next_char_bytes(const char *str, size_t max_bytes)
Get byte length of next UTF-8 character.
Definition utf8.c:205
const char * utf8_strcasestr(const char *haystack, const char *needle)
Case-insensitive substring search with full Unicode support.
Definition utf8.c:272
int utf8_continuation_bytes_needed(unsigned char first_byte)
Determine how many additional bytes are needed to complete a UTF-8 character.
Definition utf8.c:222
size_t utf8_char_count(const char *str)
Count UTF-8 characters (not bytes)
Definition utf8.c:136
ClangTool/LibTooling compatibility shim for stdbool.h.