File indexing completed on 2024-05-05 05:54:12

0001 /*
0002     This file is part of Konsole, a terminal emulator for KDE.
0003 
0004     SPDX-FileCopyrightText: 2018 Mariusz Glebocki <mglb@arccos-1.net>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 /* clang-format off */
0010 
0011 #ifndef CATEGORY_PROPERTY_VALUE
0012 #define CATEGORY_PROPERTY_VALUE(val, sym, intVal)
0013 #endif
0014 #ifndef CATEGORY_PROPERTY_GROUP
0015 #define CATEGORY_PROPERTY_GROUP(val, sym, intVal)
0016 #endif
0017 
0018 CATEGORY_PROPERTY_VALUE(Lu, UppercaseLetter,        1<<0)   // an uppercase letter
0019 CATEGORY_PROPERTY_VALUE(Ll, LowercaseLetter,        1<<1)   // a lowercase letter
0020 CATEGORY_PROPERTY_VALUE(Lt, TitlecaseLetter,        1<<2)   // a digraphic character, with first part uppercase
0021 CATEGORY_PROPERTY_GROUP(LC, CasedLetter,            1<<0|1<<1|1<<2)
0022 CATEGORY_PROPERTY_VALUE(Lm, ModifierLetter,         1<<3)   // a modifier letter
0023 CATEGORY_PROPERTY_VALUE(Lo, OtherLetter,            1<<4)   // other letters, including syllables and ideographs
0024 CATEGORY_PROPERTY_GROUP(L,  Letter,                 1<<0|1<<1|1<<2|1<<3|1<<4)
0025 CATEGORY_PROPERTY_VALUE(Mn, NonspacingMark,         1<<5)   // a nonspacing combining mark (zero advance width)
0026 CATEGORY_PROPERTY_VALUE(Mc, SpacingMark,            1<<6)   // a spacing combining mark (positive advance width)
0027 CATEGORY_PROPERTY_VALUE(Me, EnclosingMark,          1<<7)   // an enclosing combining mark
0028 CATEGORY_PROPERTY_GROUP(M,  Mark,                   1<<5|1<<6|1<<7)
0029 CATEGORY_PROPERTY_VALUE(Nd, DecimalNumber,          1<<8)   // a decimal digit
0030 CATEGORY_PROPERTY_VALUE(Nl, LetterNumber,           1<<9)   // a letterlike numeric character
0031 CATEGORY_PROPERTY_VALUE(No, OtherNumber,            1<<10)  // a numeric character of other type
0032 CATEGORY_PROPERTY_GROUP(N,  Number,                 1<<8|1<<9|1<<10)
0033 CATEGORY_PROPERTY_VALUE(Pc, ConnectorPunctuation,   1<<11)  // a connecting punctuation mark, like a tie
0034 CATEGORY_PROPERTY_VALUE(Pd, DashPunctuation,        1<<12)  // a dash or hyphen punctuation mark
0035 CATEGORY_PROPERTY_VALUE(Ps, OpenPunctuation,        1<<13)  // an opening punctuation mark (of a pair)
0036 CATEGORY_PROPERTY_VALUE(Pe, ClosePunctuation,       1<<14)  // a closing punctuation mark (of a pair)
0037 CATEGORY_PROPERTY_VALUE(Pi, InitialPunctuation,     1<<15)  // an initial quotation mark
0038 CATEGORY_PROPERTY_VALUE(Pf, FinalPunctuation,       1<<16)  // a final quotation mark
0039 CATEGORY_PROPERTY_VALUE(Po, OtherPunctuation,       1<<17)  // a punctuation mark of other type
0040 CATEGORY_PROPERTY_GROUP(P,  Punctuation,            1<<11|1<<12|1<<13|1<<14|1<<15|1<<16|1<<17)
0041 CATEGORY_PROPERTY_VALUE(Sm, MathSymbol,             1<<18)  // a symbol of mathematical use
0042 CATEGORY_PROPERTY_VALUE(Sc, CurrencySymbol,         1<<19)  // a currency sign
0043 CATEGORY_PROPERTY_VALUE(Sk, ModifierSymbol,         1<<20)  // a non-letterlike modifier symbol
0044 CATEGORY_PROPERTY_VALUE(So, OtherSymbol,            1<<21)  // a symbol of other type
0045 CATEGORY_PROPERTY_GROUP(S,  Symbol,                 1<<18|1<<19|1<<20|1<<21)
0046 CATEGORY_PROPERTY_VALUE(Zs, SpaceSeparator,         1<<22)  // a space character (of various non-zero widths)
0047 CATEGORY_PROPERTY_VALUE(Zl, LineSeparator,          1<<23)  // U+2028 LINE SEPARATOR only
0048 CATEGORY_PROPERTY_VALUE(Zp, ParagraphSeparator,     1<<24)  // U+2029 PARAGRAPH SEPARATOR only
0049 CATEGORY_PROPERTY_GROUP(Z,  Separator,              1<<22|1<<23|1<<24)
0050 CATEGORY_PROPERTY_VALUE(Cc, Control,                1<<25)  // a C0 or C1 control code
0051 CATEGORY_PROPERTY_VALUE(Cf, Format,                 1<<26)  // a format control character
0052 CATEGORY_PROPERTY_VALUE(Cs, Surrogate,              1<<27)  // a surrogate code point
0053 CATEGORY_PROPERTY_VALUE(Co, PrivateUse,             1<<28)  // a private-use character
0054 CATEGORY_PROPERTY_VALUE(Cn, Unassigned,             1<<29)  // a reserved unassigned code point or a noncharacter
0055 CATEGORY_PROPERTY_GROUP(C,  Other,                  1<<25|1<<26|1<<27|1<<28|1<<29)
0056 
0057 #undef CATEGORY_PROPERTY_VALUE
0058 #undef CATEGORY_PROPERTY_GROUP
0059 
0060 /**************************************/
0061 
0062 #ifndef EAST_ASIAN_WIDTH_PROPERTY_VALUE
0063 #define EAST_ASIAN_WIDTH_PROPERTY_VALUE(val, sym, intVal)
0064 #endif
0065 
0066 EAST_ASIAN_WIDTH_PROPERTY_VALUE(A,  Ambiguous,  1<<0)
0067 EAST_ASIAN_WIDTH_PROPERTY_VALUE(F,  Fullwidth,  1<<1)
0068 EAST_ASIAN_WIDTH_PROPERTY_VALUE(H,  Halfwidth,  1<<2)
0069 EAST_ASIAN_WIDTH_PROPERTY_VALUE(N,  Neutral,    1<<3)
0070 EAST_ASIAN_WIDTH_PROPERTY_VALUE(Na, Narrow,     1<<4)
0071 EAST_ASIAN_WIDTH_PROPERTY_VALUE(W,  Wide,       1<<5)
0072 
0073 #undef EAST_ASIAN_WIDTH_PROPERTY_VALUE
0074 
0075 /**************************************/
0076 
0077 #ifndef EMOJI_PROPERTY_VALUE
0078 #define EMOJI_PROPERTY_VALUE(val, sym, intVal)
0079 #endif
0080 
0081 EMOJI_PROPERTY_VALUE(,                      None,               0)
0082 EMOJI_PROPERTY_VALUE(Emoji,                 Emoji,              1<<0)
0083 EMOJI_PROPERTY_VALUE(Emoji_Presentation,    EmojiPresentation,  1<<1)
0084 EMOJI_PROPERTY_VALUE(Emoji_Modifier,        EmojiModifier,      1<<2)
0085 EMOJI_PROPERTY_VALUE(Emoji_Modifier_Base,   EmojiModifier_Base, 1<<3)
0086 EMOJI_PROPERTY_VALUE(Emoji_Component,       EmojiComponent,     1<<4)
0087 
0088 #undef EMOJI_PROPERTY_VALUE