// Generated by gmmproc 2.84.0 -- DO NOT MODIFY! #ifndef _GLIBMM_UNICODE_H #define _GLIBMM_UNICODE_H /* Copyright (C) 2002 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ #include // Not used, but we want to get rid of possible macros. #include #undef isalnum #undef isalpha #undef iscntrl #undef isdigit #undef isgraph #undef islower #undef isprint #undef ispunct #undef isspace #undef isupper #undef isxdigit #undef istitle #undef isdefined #undef iswide #undef toupper #undef tolower #undef totitle namespace Glib { /** @addtogroup glibmmEnums glibmm Enums and Flags */ /** * @var UnicodeType::CONTROL * General category "Other, Control" (Cc). * * @var UnicodeType::FORMAT * General category "Other, Format" (Cf). * * @var UnicodeType::UNASSIGNED * General category "Other, Not Assigned" (Cn). * * @var UnicodeType::PRIVATE_USE * General category "Other, Private Use" (Co). * * @var UnicodeType::SURROGATE * General category "Other, Surrogate" (Cs). * * @var UnicodeType::LOWERCASE_LETTER * General category "Letter, Lowercase" (Ll). * * @var UnicodeType::MODIFIER_LETTER * General category "Letter, Modifier" (Lm). * * @var UnicodeType::OTHER_LETTER * General category "Letter, Other" (Lo). * * @var UnicodeType::TITLECASE_LETTER * General category "Letter, Titlecase" (Lt). * * @var UnicodeType::UPPERCASE_LETTER * General category "Letter, Uppercase" (Lu). * * @var UnicodeType::SPACING_MARK * General category "Mark, Spacing" (Mc). * * @var UnicodeType::ENCLOSING_MARK * General category "Mark, Enclosing" (Me). * * @var UnicodeType::NON_SPACING_MARK * General category "Mark, Nonspacing" (Mn). * * @var UnicodeType::DECIMAL_NUMBER * General category "Number, Decimal Digit" (Nd). * * @var UnicodeType::LETTER_NUMBER * General category "Number, Letter" (Nl). * * @var UnicodeType::OTHER_NUMBER * General category "Number, Other" (No). * * @var UnicodeType::CONNECT_PUNCTUATION * General category "Punctuation, Connector" (Pc). * * @var UnicodeType::DASH_PUNCTUATION * General category "Punctuation, Dash" (Pd). * * @var UnicodeType::CLOSE_PUNCTUATION * General category "Punctuation, Close" (Pe). * * @var UnicodeType::FINAL_PUNCTUATION * General category "Punctuation, Final quote" (Pf). * * @var UnicodeType::INITIAL_PUNCTUATION * General category "Punctuation, Initial quote" (Pi). * * @var UnicodeType::OTHER_PUNCTUATION * General category "Punctuation, Other" (Po). * * @var UnicodeType::OPEN_PUNCTUATION * General category "Punctuation, Open" (Ps). * * @var UnicodeType::CURRENCY_SYMBOL * General category "Symbol, Currency" (Sc). * * @var UnicodeType::MODIFIER_SYMBOL * General category "Symbol, Modifier" (Sk). * * @var UnicodeType::MATH_SYMBOL * General category "Symbol, Math" (Sm). * * @var UnicodeType::OTHER_SYMBOL * General category "Symbol, Other" (So). * * @var UnicodeType::LINE_SEPARATOR * General category "Separator, Line" (Zl). * * @var UnicodeType::PARAGRAPH_SEPARATOR * General category "Separator, Paragraph" (Zp). * * @var UnicodeType::SPACE_SEPARATOR * General category "Separator, Space" (Zs). */ /** These are the possible character classifications from the * Unicode specification. * See [Unicode Character Database](http://www.unicode.org/reports/tr44/#General_Category_Values). * * @ingroup glibmmEnums */ enum class UnicodeType { CONTROL, FORMAT, UNASSIGNED, PRIVATE_USE, SURROGATE, LOWERCASE_LETTER, MODIFIER_LETTER, OTHER_LETTER, TITLECASE_LETTER, UPPERCASE_LETTER, SPACING_MARK, ENCLOSING_MARK, NON_SPACING_MARK, DECIMAL_NUMBER, LETTER_NUMBER, OTHER_NUMBER, CONNECT_PUNCTUATION, DASH_PUNCTUATION, CLOSE_PUNCTUATION, FINAL_PUNCTUATION, INITIAL_PUNCTUATION, OTHER_PUNCTUATION, OPEN_PUNCTUATION, CURRENCY_SYMBOL, MODIFIER_SYMBOL, MATH_SYMBOL, OTHER_SYMBOL, LINE_SEPARATOR, PARAGRAPH_SEPARATOR, SPACE_SEPARATOR }; /** * @var UnicodeBreakType::MANDATORY * Mandatory Break (BK). * * @var UnicodeBreakType::CARRIAGE_RETURN * Carriage Return (CR). * * @var UnicodeBreakType::LINE_FEED * Line Feed (LF). * * @var UnicodeBreakType::COMBINING_MARK * Attached Characters and Combining Marks (CM). * * @var UnicodeBreakType::SURROGATE * Surrogates (SG). * * @var UnicodeBreakType::ZERO_WIDTH_SPACE * Zero Width Space (ZW). * * @var UnicodeBreakType::INSEPARABLE * Inseparable (IN). * * @var UnicodeBreakType::NON_BREAKING_GLUE * Non-breaking ("Glue") (GL). * * @var UnicodeBreakType::CONTINGENT * Contingent Break Opportunity (CB). * * @var UnicodeBreakType::SPACE * Space (SP). * * @var UnicodeBreakType::AFTER * Break Opportunity After (BA). * * @var UnicodeBreakType::BEFORE * Break Opportunity Before (BB). * * @var UnicodeBreakType::BEFORE_AND_AFTER * Break Opportunity Before and After (B2). * * @var UnicodeBreakType::HYPHEN * Hyphen (HY). * * @var UnicodeBreakType::NON_STARTER * Nonstarter (NS). * * @var UnicodeBreakType::OPEN_PUNCTUATION * Opening Punctuation (OP). * * @var UnicodeBreakType::CLOSE_PUNCTUATION * Closing Punctuation (CL). * * @var UnicodeBreakType::QUOTATION * Ambiguous Quotation (QU). * * @var UnicodeBreakType::EXCLAMATION * Exclamation/Interrogation (EX). * * @var UnicodeBreakType::IDEOGRAPHIC * Ideographic (ID). * * @var UnicodeBreakType::NUMERIC * Numeric (NU). * * @var UnicodeBreakType::INFIX_SEPARATOR * Infix Separator (Numeric) (IS). * * @var UnicodeBreakType::SYMBOL * Symbols Allowing Break After (SY). * * @var UnicodeBreakType::ALPHABETIC * Ordinary Alphabetic and Symbol Characters (AL). * * @var UnicodeBreakType::PREFIX * Prefix (Numeric) (PR). * * @var UnicodeBreakType::POSTFIX * Postfix (Numeric) (PO). * * @var UnicodeBreakType::COMPLEX_CONTEXT * Complex Content Dependent (South East Asian) (SA). * * @var UnicodeBreakType::AMBIGUOUS * Ambiguous (Alphabetic or Ideographic) (AI). * * @var UnicodeBreakType::UNKNOWN * Unknown (XX). * * @var UnicodeBreakType::NEXT_LINE * Next Line (NL). * * @var UnicodeBreakType::WORD_JOINER * Word Joiner (WJ). * * @var UnicodeBreakType::HANGUL_L_JAMO * Hangul L Jamo (JL). * * @var UnicodeBreakType::HANGUL_V_JAMO * Hangul V Jamo (JV). * * @var UnicodeBreakType::HANGUL_T_JAMO * Hangul T Jamo (JT). * * @var UnicodeBreakType::HANGUL_LV_SYLLABLE * Hangul LV Syllable (H2). * * @var UnicodeBreakType::HANGUL_LVT_SYLLABLE * Hangul LVT Syllable (H3). * * @var UnicodeBreakType::CLOSE_PARANTHESIS * Closing Parenthesis (CP). @newin{2,28} Deprecated: 2.70: Use Glib::UnicodeBreakType::CLOSE_PARENTHESIS instead. * * @var UnicodeBreakType::CLOSE_PARENTHESIS * Closing Parenthesis (CP). @newin{2,70} * * @var UnicodeBreakType::CONDITIONAL_JAPANESE_STARTER * Conditional Japanese Starter (CJ). @newin{2,32} * * @var UnicodeBreakType::HEBREW_LETTER * Hebrew Letter (HL). @newin{2,32} * * @var UnicodeBreakType::REGIONAL_INDICATOR * Regional Indicator (RI). @newin{2,36} * * @var UnicodeBreakType::EMOJI_BASE * Emoji Base (EB). @newin{2,50} * * @var UnicodeBreakType::EMOJI_MODIFIER * Emoji Modifier (EM). @newin{2,50} * * @var UnicodeBreakType::ZERO_WIDTH_JOINER * Zero Width Joiner (ZWJ). @newin{2,50} * * @var UnicodeBreakType::AKSARA * Aksara (AK). @newin{2,80} * * @var UnicodeBreakType::AKSARA_PRE_BASE * Aksara Pre-Base (AP). @newin{2,80} * * @var UnicodeBreakType::AKSARA_START * Aksara Start (AS). @newin{2,80} * * @var UnicodeBreakType::VIRAMA_FINAL * Virama Final (VF). @newin{2,80} * * @var UnicodeBreakType::VIRAMA * Virama (VI). @newin{2,80} */ /** These are the possible line break classifications. * * Since new Unicode versions may add new types here, applications should be ready * to handle unknown values. They may be regarded as Glib::UnicodeBreakType::UNKNOWN. * * See [Unicode Line Breaking Algorithm](https://www.unicode.org/reports/tr14/). * * @ingroup glibmmEnums */ enum class UnicodeBreakType { MANDATORY, CARRIAGE_RETURN, LINE_FEED, COMBINING_MARK, SURROGATE, ZERO_WIDTH_SPACE, INSEPARABLE, NON_BREAKING_GLUE, CONTINGENT, SPACE, AFTER, BEFORE, BEFORE_AND_AFTER, HYPHEN, NON_STARTER, OPEN_PUNCTUATION, CLOSE_PUNCTUATION, QUOTATION, EXCLAMATION, IDEOGRAPHIC, NUMERIC, INFIX_SEPARATOR, SYMBOL, ALPHABETIC, PREFIX, POSTFIX, COMPLEX_CONTEXT, AMBIGUOUS, UNKNOWN, NEXT_LINE, WORD_JOINER, HANGUL_L_JAMO, HANGUL_V_JAMO, HANGUL_T_JAMO, HANGUL_LV_SYLLABLE, HANGUL_LVT_SYLLABLE, CLOSE_PARANTHESIS, CLOSE_PARENTHESIS = CLOSE_PARANTHESIS, CONDITIONAL_JAPANESE_STARTER, HEBREW_LETTER, REGIONAL_INDICATOR, EMOJI_BASE, EMOJI_MODIFIER, ZERO_WIDTH_JOINER, AKSARA, AKSARA_PRE_BASE, AKSARA_START, VIRAMA_FINAL, VIRAMA }; /** * * @ingroup glibmmEnums * @par Bitwise operators: * AsciiType operator|(AsciiType, AsciiType)
* AsciiType operator&(AsciiType, AsciiType)
* AsciiType operator^(AsciiType, AsciiType)
* AsciiType operator~(AsciiType)
* AsciiType& operator|=(AsciiType&, AsciiType)
* AsciiType& operator&=(AsciiType&, AsciiType)
* AsciiType& operator^=(AsciiType&, AsciiType)
*/ enum class AsciiType { ALNUM = 1 << 0, ALPHA = 1 << 1, CNTRL = 1 << 2, DIGIT = 1 << 3, GRAPH = 1 << 4, LOWER = 1 << 5, PRINT = 1 << 6, PUNCT = 1 << 7, SPACE = 1 << 8, UPPER = 1 << 9, XDIGIT = 1 << 10 }; /** @ingroup glibmmEnums */ inline AsciiType operator|(AsciiType lhs, AsciiType rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } /** @ingroup glibmmEnums */ inline AsciiType operator&(AsciiType lhs, AsciiType rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } /** @ingroup glibmmEnums */ inline AsciiType operator^(AsciiType lhs, AsciiType rhs) { return static_cast(static_cast(lhs) ^ static_cast(rhs)); } /** @ingroup glibmmEnums */ inline AsciiType operator~(AsciiType flags) { return static_cast(~static_cast(flags)); } /** @ingroup glibmmEnums */ inline AsciiType& operator|=(AsciiType& lhs, AsciiType rhs) { return (lhs = static_cast(static_cast(lhs) | static_cast(rhs))); } /** @ingroup glibmmEnums */ inline AsciiType& operator&=(AsciiType& lhs, AsciiType rhs) { return (lhs = static_cast(static_cast(lhs) & static_cast(rhs))); } /** @ingroup glibmmEnums */ inline AsciiType& operator^=(AsciiType& lhs, AsciiType rhs) { return (lhs = static_cast(static_cast(lhs) ^ static_cast(rhs))); } /** * @var NormalizeMode::DEFAULT * Standardize differences that do not affect the * text content, such as the above-mentioned accent representation. * * @var NormalizeMode::NFD * Another name for Glib::NormalizeMode::DEFAULT. * * @var NormalizeMode::DEFAULT_COMPOSE * Like Glib::NormalizeMode::DEFAULT, but with * composed forms rather than a maximally decomposed form. * * @var NormalizeMode::NFC * Another name for Glib::NormalizeMode::DEFAULT_COMPOSE. * * @var NormalizeMode::ALL * Beyond Glib::NormalizeMode::DEFAULT also standardize the * "compatibility" characters in Unicode, such as SUPERSCRIPT THREE * to the standard forms (in this case DIGIT THREE). Formatting * information may be lost but for most text operations such * characters should be considered the same. * * @var NormalizeMode::NFKD * Another name for Glib::NormalizeMode::ALL. * * @var NormalizeMode::ALL_COMPOSE * Like Glib::NormalizeMode::ALL, but with composed * forms rather than a maximally decomposed form. * * @var NormalizeMode::NFKC * Another name for Glib::NormalizeMode::ALL_COMPOSE. */ /** Defines how a Unicode string is transformed in a canonical * form, standardizing such issues as whether a character with * an accent is represented as a base character and combining * accent or as a single precomposed character. Unicode strings * should generally be normalized before comparing them. * * @ingroup glibmmEnums */ enum class NormalizeMode { DEFAULT, NFD = DEFAULT, DEFAULT_COMPOSE, NFC = DEFAULT_COMPOSE, ALL, NFKD = ALL, ALL_COMPOSE, NFKC = ALL_COMPOSE }; /** @defgroup Unicode Unicode Manipulation * Functions operating on Unicode characters and UTF-8 strings. * @{ */ namespace Unicode { inline bool validate(gunichar uc) { return (g_unichar_validate(uc) != 0); } inline bool isalnum(gunichar uc) { return (g_unichar_isalnum(uc) != 0); } inline bool isalpha(gunichar uc) { return (g_unichar_isalpha(uc) != 0); } inline bool iscntrl(gunichar uc) { return (g_unichar_iscntrl(uc) != 0); } inline bool isdigit(gunichar uc) { return (g_unichar_isdigit(uc) != 0); } inline bool isgraph(gunichar uc) { return (g_unichar_isgraph(uc) != 0); } inline bool islower(gunichar uc) { return (g_unichar_islower(uc) != 0); } inline bool isprint(gunichar uc) { return (g_unichar_isprint(uc) != 0); } inline bool ispunct(gunichar uc) { return (g_unichar_ispunct(uc) != 0); } inline bool isspace(gunichar uc) { return (g_unichar_isspace(uc) != 0); } inline bool isupper(gunichar uc) { return (g_unichar_isupper(uc) != 0); } inline bool isxdigit(gunichar uc) { return (g_unichar_isxdigit(uc) != 0); } inline bool istitle(gunichar uc) { return (g_unichar_istitle(uc) != 0); } inline bool isdefined(gunichar uc) { return (g_unichar_isdefined(uc) != 0); } inline bool iswide(gunichar uc) { return (g_unichar_iswide(uc) != 0); } inline gunichar toupper(gunichar uc) { return g_unichar_toupper(uc); } inline gunichar tolower(gunichar uc) { return g_unichar_tolower(uc); } inline gunichar totitle(gunichar uc) { return g_unichar_totitle(uc); } inline int digit_value(gunichar uc) { return g_unichar_digit_value(uc); } inline int xdigit_value(gunichar uc) { return g_unichar_xdigit_value(uc); } inline Glib::UnicodeType type(gunichar uc) { return static_cast(static_cast(g_unichar_type(uc))); } inline Glib::UnicodeBreakType break_type(gunichar uc) { return static_cast(static_cast(g_unichar_break_type(uc))); } } // namespace Unicode namespace Ascii { inline bool isalnum(char c) { return g_ascii_isalnum(c); } inline bool isalpha(char c) { return g_ascii_isalpha(c); } inline bool iscntrl(char c) { return g_ascii_iscntrl(c); } inline bool isdigit(char c) { return g_ascii_isdigit(c); } inline bool isgraph(char c) { return g_ascii_isgraph(c); } inline bool islower(char c) { return g_ascii_islower(c); } inline bool isprint(char c) { return g_ascii_isprint(c); } inline bool ispunct(char c) { return g_ascii_ispunct(c); } inline bool isspace(char c) { return g_ascii_isspace(c); } inline bool isupper(char c) { return g_ascii_isupper(c); } inline bool isxdigit(char c) { return g_ascii_isxdigit(c); } inline char tolower(char c) { return g_ascii_tolower(c); } inline char toupper(char c) { return g_ascii_toupper(c); } inline int digit_value(char c) { return g_ascii_digit_value(c); } inline int xdigit_value(char c) { return g_ascii_xdigit_value(c); } } // namespace Ascii /** @} group Unicode */ } // namespace Glib #endif /* _GLIBMM_UNICODE_H */