summaryrefslogtreecommitdiffstats
path: root/src/basic/gunicode.h
blob: 6b7183986fd2fc8a08997c60ce5d0aa08c0669ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* gunicode.h - Unicode manipulation functions
 *
 *  Copyright (C) 1999, 2000 Tom Tromey
 *  Copyright © 2000, 2005 Red Hat, Inc.
 */
#pragma once

#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>

char *utf8_prev_char (const char *p);

extern const char utf8_skip_data[256];

/**
 * g_utf8_next_char:
 * @p: Pointer to the start of a valid UTF-8 character
 *
 * Skips to the next character in a UTF-8 string. The string must be
 * valid; this macro is as fast as possible, and has no error-checking.
 * You would use this macro to iterate over a string character by
 * character. The macro returns the start of the next UTF-8 character.
 * Before using this macro, use g_utf8_validate() to validate strings
 * that may contain invalid UTF-8.
 */
#define utf8_next_char(p) (char *)((p) + utf8_skip_data[*(const unsigned char *)(p)])

bool unichar_iswide (uint32_t c);