diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-04-01 16:03:29 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-04-01 16:03:47 +0200 |
commit | 8c2f9268ab976015edcff16e26a13398bba8396c (patch) | |
tree | 3a4d21799f29fe0bb17e4cda9aae45106ff54aab /include/unicode/prop.h | |
parent | 436969300bbc0a70179afab252d4dd1a8462febc (diff) |
Add unicode/prop.h
Diffstat (limited to 'include/unicode/prop.h')
-rw-r--r-- | include/unicode/prop.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/unicode/prop.h b/include/unicode/prop.h new file mode 100644 index 0000000..e3a31ad --- /dev/null +++ b/include/unicode/prop.h @@ -0,0 +1,53 @@ +#ifndef MLIB_UNICODE_PROP_H +#define MLIB_UNICODE_PROP_H + +#include <inttypes.h> + +#include "__rune.h" + +enum [[clang::flag_enum]] uprop_gc : uint_fast32_t { + GC_CN = UINT32_C(1) << 0, /* Not Assigned */ + GC_CC = UINT32_C(1) << 1, /* Control */ + GC_CF = UINT32_C(1) << 2, /* Format */ + GC_CO = UINT32_C(1) << 3, /* Private Use */ + GC_CS = UINT32_C(1) << 4, /* Surrogate */ + GC_LL = UINT32_C(1) << 5, /* Lowercase Letter */ + GC_LM = UINT32_C(1) << 6, /* Modifier Letter */ + GC_LO = UINT32_C(1) << 7, /* Other Letter */ + GC_LT = UINT32_C(1) << 8, /* Titlecase Letter */ + GC_LU = UINT32_C(1) << 9, /* Uppercase Letter */ + GC_MC = UINT32_C(1) << 10, /* Spacing Mark */ + GC_ME = UINT32_C(1) << 11, /* Enclosing Mark */ + GC_MN = UINT32_C(1) << 12, /* Nonspacing Mark */ + GC_ND = UINT32_C(1) << 13, /* Decimal Number */ + GC_NL = UINT32_C(1) << 14, /* Letter Number */ + GC_NO = UINT32_C(1) << 15, /* Other Number */ + GC_PC = UINT32_C(1) << 16, /* Connector Punctuation */ + GC_PD = UINT32_C(1) << 17, /* Dash Punctuation */ + GC_PE = UINT32_C(1) << 18, /* Close Punctuation */ + GC_PF = UINT32_C(1) << 19, /* Final Punctuation */ + GC_PI = UINT32_C(1) << 20, /* Initial Punctuation */ + GC_PO = UINT32_C(1) << 21, /* Other Punctuation */ + GC_PS = UINT32_C(1) << 22, /* Open Punctuation */ + GC_SC = UINT32_C(1) << 23, /* Currency Symbol */ + GC_SK = UINT32_C(1) << 24, /* Modifier Symbol */ + GC_SM = UINT32_C(1) << 25, /* Math Symbol */ + GC_SO = UINT32_C(1) << 26, /* Other Symbol */ + GC_ZL = UINT32_C(1) << 27, /* Line Separator */ + GC_ZP = UINT32_C(1) << 28, /* Paragraph Separator */ + GC_ZS = UINT32_C(1) << 29, /* Space Separator */ + + /* Punctuation */ + GC_P = GC_PC | GC_PD | GC_PE | GC_PF | GC_PI | GC_PO | GC_PS, + GC_C = GC_CC | GC_CF | GC_CN | GC_CO | GC_CS, /* Other */ + GC_LC = GC_LU | GC_LL | GC_LT, /* Cased Letter */ + GC_L = GC_LL | GC_LM | GC_LO | GC_LT | GC_LU, /* Letter */ + GC_M = GC_MC | GC_ME | GC_MN, /* Mark */ + GC_N = GC_ND | GC_NL | GC_NO, /* Number */ + GC_S = GC_SC | GC_SK | GC_SM | GC_SO, /* Symbol */ + GC_Z = GC_ZL | GC_ZP | GC_ZS, /* Separator */ +}; + +enum uprop_gc uprop_get_gc(rune); + +#endif /* !MLIB_UNICODE_PROP_H */ |