22#ifndef __G_UNICODE_H__
23#define __G_UNICODE_H__
25#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
26#error "Only <glib.h> can be included directly."
159#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK GLIB_DEPRECATED_MACRO_IN_2_30_FOR(G_UNICODE_SPACING_MARK)
775#define G_UNICHAR_MAX_DECOMPOSITION_LENGTH 18
809#define g_utf8_next_char(p) ((p) + g_utf8_skip[*(const guchar *)(p)])
848 gsize truncate_length);
868 glong *items_written,
874 glong *items_written,
884 glong *items_written,
890 glong *items_written,
896 glong *items_written,
902 glong *items_written,
#define GLIB_AVAILABLE_IN_2_60
#define GLIB_AVAILABLE_IN_2_30
#define GLIB_AVAILABLE_IN_ALL
#define GLIB_AVAILABLE_IN_2_78
#define GLIB_DEPRECATED_IN_2_30
#define GLIB_AVAILABLE_IN_2_52
G_BEGIN_DECLS typedef char gchar
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isgraph(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL void g_unicode_canonical_ordering(gunichar *string, gsize len)
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_islower(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_strrchr(const gchar *p, gssize len, gunichar c)
GLIB_AVAILABLE_IN_ALL gunichar2 * g_utf8_to_utf16(const gchar *str, glong len, glong *items_read, glong *items_written, GError **error) G_GNUC_MALLOC
G_BEGIN_DECLS typedef guint32 gunichar
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_compose(gunichar a, gunichar b, gunichar *ch)
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_decompose(gunichar ch, gunichar *a, gunichar *b)
GLIB_AVAILABLE_IN_ALL gint g_unichar_digit_value(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_find_prev_char(const gchar *str, const gchar *p) G_GNUC_PURE
@ G_UNICODE_CLOSE_PUNCTUATION
@ G_UNICODE_PARAGRAPH_SEPARATOR
@ G_UNICODE_LOWERCASE_LETTER
@ G_UNICODE_UPPERCASE_LETTER
@ G_UNICODE_ENCLOSING_MARK
@ G_UNICODE_LETTER_NUMBER
@ G_UNICODE_CURRENCY_SYMBOL
@ G_UNICODE_DASH_PUNCTUATION
@ G_UNICODE_DECIMAL_NUMBER
@ G_UNICODE_CONNECT_PUNCTUATION
@ G_UNICODE_TITLECASE_LETTER
@ G_UNICODE_FINAL_PUNCTUATION
@ G_UNICODE_MODIFIER_LETTER
@ G_UNICODE_OTHER_PUNCTUATION
@ G_UNICODE_LINE_SEPARATOR
@ G_UNICODE_SPACE_SEPARATOR
@ G_UNICODE_INITIAL_PUNCTUATION
@ G_UNICODE_NON_SPACING_MARK
@ G_UNICODE_OPEN_PUNCTUATION
@ G_UNICODE_MODIFIER_SYMBOL
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_ispunct(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gunichar * g_utf8_to_ucs4(const gchar *str, glong len, glong *items_read, glong *items_written, GError **error) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_iszerowidth(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_validate(gunichar ch) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_strchr(const gchar *p, gssize len, gunichar c)
GLIB_AVAILABLE_IN_ALL gchar * g_utf16_to_utf8(const gunichar2 *str, glong len, glong *items_read, glong *items_written, GError **error) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_2_30 gchar * g_utf8_substring(const gchar *str, glong start_pos, glong end_pos) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isprint(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_find_next_char(const gchar *p, const gchar *end) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_normalize(const gchar *str, gssize len, GNormalizeMode mode) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_strdown(const gchar *str, gssize len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL guint32 g_unicode_script_to_iso15924(GUnicodeScript script)
GLIB_AVAILABLE_IN_ALL gunichar g_unichar_totitle(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gint g_unichar_to_utf8(gunichar c, gchar *outbuf)
GLIB_AVAILABLE_IN_2_60 gboolean g_utf8_validate_len(const gchar *str, gsize max_len, const gchar **end)
GLIB_AVAILABLE_IN_ALL GUnicodeType g_unichar_type(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_prev_char(const gchar *p) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_strncpy(gchar *dest, const gchar *src, gsize n)
GLIB_AVAILABLE_IN_2_52 gchar * g_utf8_make_valid(const gchar *str, gssize len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isxdigit(gunichar c) G_GNUC_CONST
GLIB_DEPRECATED_IN_2_30 gunichar * g_unicode_canonical_decomposition(gunichar ch, gsize *result_len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gunichar g_utf8_get_char(const gchar *p) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_istitle(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_get_mirror_char(gunichar ch, gunichar *mirrored_ch)
GLIB_AVAILABLE_IN_ALL gunichar g_utf8_get_char_validated(const gchar *p, gssize max_len) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL GUnicodeScript g_unichar_get_script(gunichar ch) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_collate_key(const gchar *str, gssize len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gint g_unichar_combining_class(gunichar uc) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_iscntrl(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isdefined(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_2_78 gchar * g_utf8_truncate_middle(const gchar *string, gsize truncate_length)
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_strup(const gchar *str, gssize len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL GUnicodeScript g_unicode_script_from_iso15924(guint32 iso15924)
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_ismark(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL glong g_utf8_pointer_to_offset(const gchar *str, const gchar *pos) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL gchar * g_ucs4_to_utf8(const gunichar *str, glong len, glong *items_read, glong *items_written, GError **error) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_collate_key_for_filename(const gchar *str, gssize len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL GUnicodeBreakType g_unichar_break_type(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gint g_unichar_xdigit_value(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_iswide_cjk(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gunichar2 * g_ucs4_to_utf16(const gunichar *str, glong len, glong *items_read, glong *items_written, GError **error) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gint g_utf8_collate(const gchar *str1, const gchar *str2) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isalpha(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gunichar g_unichar_tolower(gunichar c) G_GNUC_CONST
@ G_NORMALIZE_DEFAULT_COMPOSE
@ G_NORMALIZE_ALL_COMPOSE
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_casefold(const gchar *str, gssize len) G_GNUC_MALLOC
GLIB_AVAILABLE_IN_ALL gsize g_unichar_fully_decompose(gunichar ch, gboolean compat, gunichar *result, gsize result_len)
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_strreverse(const gchar *str, gssize len)
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isalnum(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_iswide(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gchar * g_utf8_offset_to_pointer(const gchar *str, glong offset) G_GNUC_PURE
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isupper(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gunichar * g_utf8_to_ucs4_fast(const gchar *str, glong len, glong *items_written) G_GNUC_MALLOC
@ G_UNICODE_BREAK_QUOTATION
@ G_UNICODE_BREAK_EXCLAMATION
@ G_UNICODE_BREAK_CLOSE_PUNCTUATION
@ G_UNICODE_BREAK_NEXT_LINE
@ G_UNICODE_BREAK_NON_BREAKING_GLUE
@ G_UNICODE_BREAK_HANGUL_T_JAMO
@ G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE
@ G_UNICODE_BREAK_AKSARA_START
@ G_UNICODE_BREAK_HEBREW_LETTER
@ G_UNICODE_BREAK_IDEOGRAPHIC
@ G_UNICODE_BREAK_NON_STARTER
@ G_UNICODE_BREAK_REGIONAL_INDICATOR
@ G_UNICODE_BREAK_MANDATORY
@ G_UNICODE_BREAK_EMOJI_BASE
@ G_UNICODE_BREAK_HANGUL_LV_SYLLABLE
@ G_UNICODE_BREAK_INSEPARABLE
@ G_UNICODE_BREAK_OPEN_PUNCTUATION
@ G_UNICODE_BREAK_POSTFIX
@ G_UNICODE_BREAK_ZERO_WIDTH_JOINER
@ G_UNICODE_BREAK_CARRIAGE_RETURN
@ G_UNICODE_BREAK_ALPHABETIC
@ G_UNICODE_BREAK_AKSARA_PRE_BASE
@ G_UNICODE_BREAK_EMOJI_MODIFIER
@ G_UNICODE_BREAK_AMBIGUOUS
@ GLIB_AVAILABLE_ENUMERATOR_IN_2_70
@ G_UNICODE_BREAK_UNKNOWN
@ G_UNICODE_BREAK_CONTINGENT
@ G_UNICODE_BREAK_BEFORE_AND_AFTER
@ G_UNICODE_BREAK_WORD_JOINER
@ G_UNICODE_BREAK_COMBINING_MARK
@ G_UNICODE_BREAK_COMPLEX_CONTEXT
@ G_UNICODE_BREAK_VIRAMA_FINAL
@ G_UNICODE_BREAK_SURROGATE
@ G_UNICODE_BREAK_ZERO_WIDTH_SPACE
@ G_UNICODE_BREAK_INFIX_SEPARATOR
@ G_UNICODE_BREAK_CLOSE_PARANTHESIS
@ G_UNICODE_BREAK_LINE_FEED
@ G_UNICODE_BREAK_NUMERIC
@ G_UNICODE_BREAK_HANGUL_L_JAMO
@ G_UNICODE_BREAK_HANGUL_V_JAMO
@ G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER
GLIB_AVAILABLE_IN_ALL gboolean g_utf8_validate(const gchar *str, gssize max_len, const gchar **end)
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isspace(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gunichar g_unichar_toupper(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL gunichar * g_utf16_to_ucs4(const gunichar2 *str, glong len, glong *items_read, glong *items_written, GError **error) G_GNUC_MALLOC
GLIB_VAR const gchar *const g_utf8_skip
@ G_UNICODE_SCRIPT_BRAILLE
@ G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN
@ G_UNICODE_SCRIPT_OLD_SOGDIAN
@ G_UNICODE_SCRIPT_VITHKUQI
@ G_UNICODE_SCRIPT_HANIFI_ROHINGYA
@ G_UNICODE_SCRIPT_TIBETAN
@ G_UNICODE_SCRIPT_KHOJKI
@ G_UNICODE_SCRIPT_WANCHO
@ G_UNICODE_SCRIPT_ARABIC
@ G_UNICODE_SCRIPT_BALINESE
@ G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS
@ G_UNICODE_SCRIPT_MEDEFAIDRIN
@ G_UNICODE_SCRIPT_OLD_PERSIAN
@ G_UNICODE_SCRIPT_JAVANESE
@ G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS
@ G_UNICODE_SCRIPT_MONGOLIAN
@ G_UNICODE_SCRIPT_TANGUT
@ G_UNICODE_SCRIPT_HIRAGANA
@ G_UNICODE_SCRIPT_MULTANI
@ G_UNICODE_SCRIPT_MENDE_KIKAKUI
@ G_UNICODE_SCRIPT_HANUNOO
@ G_UNICODE_SCRIPT_GLAGOLITIC
@ G_UNICODE_SCRIPT_MAHAJANI
@ G_UNICODE_SCRIPT_SOGDIAN
@ G_UNICODE_SCRIPT_GOTHIC
@ G_UNICODE_SCRIPT_TAI_LE
@ G_UNICODE_SCRIPT_TIRHUTA
@ G_UNICODE_SCRIPT_TAGALOG
@ G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN
@ G_UNICODE_SCRIPT_PALMYRENE
@ G_UNICODE_SCRIPT_GEORGIAN
@ G_UNICODE_SCRIPT_SIGNWRITING
@ G_UNICODE_SCRIPT_MEROITIC_CURSIVE
@ G_UNICODE_SCRIPT_DESERET
@ G_UNICODE_SCRIPT_CYPRO_MINOAN
@ G_UNICODE_SCRIPT_INVALID_CODE
@ G_UNICODE_SCRIPT_CYPRIOT
@ G_UNICODE_SCRIPT_MALAYALAM
@ G_UNICODE_SCRIPT_SYRIAC
@ G_UNICODE_SCRIPT_AVESTAN
@ G_UNICODE_SCRIPT_MANDAIC
@ G_UNICODE_SCRIPT_SORA_SOMPENG
@ G_UNICODE_SCRIPT_CHAKMA
@ G_UNICODE_SCRIPT_ETHIOPIC
@ G_UNICODE_SCRIPT_CHEROKEE
@ G_UNICODE_SCRIPT_KAYAH_LI
@ G_UNICODE_SCRIPT_ZANABAZAR_SQUARE
@ G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN
@ G_UNICODE_SCRIPT_NABATAEAN
@ G_UNICODE_SCRIPT_MAKASAR
@ G_UNICODE_SCRIPT_SAURASHTRA
@ G_UNICODE_SCRIPT_KHAROSHTHI
@ G_UNICODE_SCRIPT_BENGALI
@ G_UNICODE_SCRIPT_UGARITIC
@ G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC
@ G_UNICODE_SCRIPT_SYLOTI_NAGRI
@ G_UNICODE_SCRIPT_HANGUL
@ G_UNICODE_SCRIPT_TAGBANWA
@ G_UNICODE_SCRIPT_SAMARITAN
@ G_UNICODE_SCRIPT_MARCHEN
@ G_UNICODE_SCRIPT_OSMANYA
@ G_UNICODE_SCRIPT_GUNJALA_GONDI
@ G_UNICODE_SCRIPT_CARIAN
@ G_UNICODE_SCRIPT_TAI_VIET
@ G_UNICODE_SCRIPT_PAHAWH_HMONG
@ GLIB_AVAILABLE_ENUMERATOR_IN_2_74
@ G_UNICODE_SCRIPT_OLD_TURKIC
@ G_UNICODE_SCRIPT_CUNEIFORM
@ G_UNICODE_SCRIPT_BOPOMOFO
@ G_UNICODE_SCRIPT_ELBASAN
@ G_UNICODE_SCRIPT_LEPCHA
@ G_UNICODE_SCRIPT_BASSA_VAH
@ G_UNICODE_SCRIPT_CYRILLIC
@ G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS
@ G_UNICODE_SCRIPT_YEZIDI
@ G_UNICODE_SCRIPT_PSALTER_PAHLAVI
@ G_UNICODE_SCRIPT_TAI_THAM
@ G_UNICODE_SCRIPT_TELUGU
@ G_UNICODE_SCRIPT_DIVES_AKURU
@ G_UNICODE_SCRIPT_SOYOMBO
@ G_UNICODE_SCRIPT_MASARAM_GONDI
@ G_UNICODE_SCRIPT_DUPLOYAN
@ G_UNICODE_SCRIPT_PAU_CIN_HAU
@ G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG
@ G_UNICODE_SCRIPT_SHARADA
@ G_UNICODE_SCRIPT_KATAKANA
@ G_UNICODE_SCRIPT_SUNDANESE
@ G_UNICODE_SCRIPT_LYDIAN
@ G_UNICODE_SCRIPT_PHOENICIAN
@ G_UNICODE_SCRIPT_THAANA
@ G_UNICODE_SCRIPT_BRAHMI
@ G_UNICODE_SCRIPT_OLD_PERMIC
@ G_UNICODE_SCRIPT_DEVANAGARI
@ G_UNICODE_SCRIPT_MYANMAR
@ G_UNICODE_SCRIPT_INHERITED
@ G_UNICODE_SCRIPT_OL_CHIKI
@ G_UNICODE_SCRIPT_SINHALA
@ G_UNICODE_SCRIPT_GRANTHA
@ G_UNICODE_SCRIPT_KAITHI
@ G_UNICODE_SCRIPT_KANNADA
@ G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN
@ G_UNICODE_SCRIPT_CHORASMIAN
@ G_UNICODE_SCRIPT_TIFINAGH
@ G_UNICODE_SCRIPT_KHUDAWADI
@ G_UNICODE_SCRIPT_OLD_HUNGARIAN
@ G_UNICODE_SCRIPT_ARMENIAN
@ G_UNICODE_SCRIPT_TANGSA
@ G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT
@ G_UNICODE_SCRIPT_REJANG
@ G_UNICODE_SCRIPT_UNKNOWN
@ G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI
@ G_UNICODE_SCRIPT_MANICHAEAN
@ G_UNICODE_SCRIPT_GURMUKHI
@ G_UNICODE_SCRIPT_MEETEI_MAYEK
@ G_UNICODE_SCRIPT_LINEAR_A
@ G_UNICODE_SCRIPT_SIDDHAM
@ G_UNICODE_SCRIPT_HEBREW
@ G_UNICODE_SCRIPT_LINEAR_B
@ G_UNICODE_SCRIPT_NEW_TAI_LUE
@ G_UNICODE_SCRIPT_COMMON
@ G_UNICODE_SCRIPT_GUJARATI
@ G_UNICODE_SCRIPT_ELYMAIC
@ G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL
@ G_UNICODE_SCRIPT_OLD_UYGHUR
@ G_UNICODE_SCRIPT_BUGINESE
@ G_UNICODE_SCRIPT_PHAGS_PA
@ G_UNICODE_SCRIPT_BHAIKSUKI
@ G_UNICODE_SCRIPT_LYCIAN
@ G_UNICODE_SCRIPT_SHAVIAN
@ G_UNICODE_SCRIPT_WARANG_CITI
@ G_UNICODE_SCRIPT_HATRAN
@ G_UNICODE_SCRIPT_NANDINAGARI
@ G_UNICODE_SCRIPT_COPTIC
@ G_UNICODE_SCRIPT_OLD_ITALIC
GLIB_AVAILABLE_IN_ALL gboolean g_unichar_isdigit(gunichar c) G_GNUC_CONST
GLIB_AVAILABLE_IN_ALL glong g_utf8_strlen(const gchar *p, gssize max) G_GNUC_PURE
static void error(LoadState *S, const char *why)