File indexing completed on 2025-01-17 09:56:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef _UNICTYPE_H
0019 #define _UNICTYPE_H
0020
0021 #include "unitypes.h"
0022
0023
0024 #include <unistring/stdbool.h>
0025
0026
0027 #include <stddef.h>
0028
0029 #if 1
0030 # include <unistring/woe32dll.h>
0031 #else
0032 # define LIBUNISTRING_DLL_VARIABLE
0033 #endif
0034
0035 #ifdef __cplusplus
0036 extern "C" {
0037 #endif
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 typedef struct
0053 {
0054 uint32_t bitmask : 31;
0055 unsigned int generic : 1;
0056 union
0057 {
0058 const void *table;
0059 bool (*lookup_fn) (ucs4_t uc, uint32_t bitmask);
0060 } lookup;
0061 }
0062 uc_general_category_t;
0063
0064
0065
0066
0067
0068 enum
0069 {
0070 UC_CATEGORY_MASK_L = 0x0000001f,
0071 UC_CATEGORY_MASK_LC = 0x00000007,
0072 UC_CATEGORY_MASK_Lu = 0x00000001,
0073 UC_CATEGORY_MASK_Ll = 0x00000002,
0074 UC_CATEGORY_MASK_Lt = 0x00000004,
0075 UC_CATEGORY_MASK_Lm = 0x00000008,
0076 UC_CATEGORY_MASK_Lo = 0x00000010,
0077 UC_CATEGORY_MASK_M = 0x000000e0,
0078 UC_CATEGORY_MASK_Mn = 0x00000020,
0079 UC_CATEGORY_MASK_Mc = 0x00000040,
0080 UC_CATEGORY_MASK_Me = 0x00000080,
0081 UC_CATEGORY_MASK_N = 0x00000700,
0082 UC_CATEGORY_MASK_Nd = 0x00000100,
0083 UC_CATEGORY_MASK_Nl = 0x00000200,
0084 UC_CATEGORY_MASK_No = 0x00000400,
0085 UC_CATEGORY_MASK_P = 0x0003f800,
0086 UC_CATEGORY_MASK_Pc = 0x00000800,
0087 UC_CATEGORY_MASK_Pd = 0x00001000,
0088 UC_CATEGORY_MASK_Ps = 0x00002000,
0089 UC_CATEGORY_MASK_Pe = 0x00004000,
0090 UC_CATEGORY_MASK_Pi = 0x00008000,
0091 UC_CATEGORY_MASK_Pf = 0x00010000,
0092 UC_CATEGORY_MASK_Po = 0x00020000,
0093 UC_CATEGORY_MASK_S = 0x003c0000,
0094 UC_CATEGORY_MASK_Sm = 0x00040000,
0095 UC_CATEGORY_MASK_Sc = 0x00080000,
0096 UC_CATEGORY_MASK_Sk = 0x00100000,
0097 UC_CATEGORY_MASK_So = 0x00200000,
0098 UC_CATEGORY_MASK_Z = 0x01c00000,
0099 UC_CATEGORY_MASK_Zs = 0x00400000,
0100 UC_CATEGORY_MASK_Zl = 0x00800000,
0101 UC_CATEGORY_MASK_Zp = 0x01000000,
0102 UC_CATEGORY_MASK_C = 0x3e000000,
0103 UC_CATEGORY_MASK_Cc = 0x02000000,
0104 UC_CATEGORY_MASK_Cf = 0x04000000,
0105 UC_CATEGORY_MASK_Cs = 0x08000000,
0106 UC_CATEGORY_MASK_Co = 0x10000000,
0107 UC_CATEGORY_MASK_Cn = 0x20000000
0108 };
0109
0110
0111 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_L;
0112 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_LC;
0113 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lu;
0114 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Ll;
0115 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lt;
0116 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lm;
0117 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lo;
0118 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_M;
0119 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Mn;
0120 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Mc;
0121 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Me;
0122 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_N;
0123 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Nd;
0124 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Nl;
0125 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_No;
0126 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_P;
0127 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pc;
0128 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pd;
0129 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Ps;
0130 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pe;
0131 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pi;
0132 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pf;
0133 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Po;
0134 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_S;
0135 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Sm;
0136 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Sc;
0137 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Sk;
0138 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_So;
0139 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Z;
0140 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Zs;
0141 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Zl;
0142 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Zp;
0143 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_C;
0144 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cc;
0145 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cf;
0146 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cs;
0147 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Co;
0148 extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cn;
0149
0150 extern const uc_general_category_t _UC_CATEGORY_NONE;
0151
0152
0153 #define UC_LETTER UC_CATEGORY_L
0154 #define UC_CASED_LETTER UC_CATEGORY_LC
0155 #define UC_UPPERCASE_LETTER UC_CATEGORY_Lu
0156 #define UC_LOWERCASE_LETTER UC_CATEGORY_Ll
0157 #define UC_TITLECASE_LETTER UC_CATEGORY_Lt
0158 #define UC_MODIFIER_LETTER UC_CATEGORY_Lm
0159 #define UC_OTHER_LETTER UC_CATEGORY_Lo
0160 #define UC_MARK UC_CATEGORY_M
0161 #define UC_NON_SPACING_MARK UC_CATEGORY_Mn
0162 #define UC_COMBINING_SPACING_MARK UC_CATEGORY_Mc
0163 #define UC_ENCLOSING_MARK UC_CATEGORY_Me
0164 #define UC_NUMBER UC_CATEGORY_N
0165 #define UC_DECIMAL_DIGIT_NUMBER UC_CATEGORY_Nd
0166 #define UC_LETTER_NUMBER UC_CATEGORY_Nl
0167 #define UC_OTHER_NUMBER UC_CATEGORY_No
0168 #define UC_PUNCTUATION UC_CATEGORY_P
0169 #define UC_CONNECTOR_PUNCTUATION UC_CATEGORY_Pc
0170 #define UC_DASH_PUNCTUATION UC_CATEGORY_Pd
0171 #define UC_OPEN_PUNCTUATION UC_CATEGORY_Ps
0172 #define UC_CLOSE_PUNCTUATION UC_CATEGORY_Pe
0173 #define UC_INITIAL_QUOTE_PUNCTUATION UC_CATEGORY_Pi
0174 #define UC_FINAL_QUOTE_PUNCTUATION UC_CATEGORY_Pf
0175 #define UC_OTHER_PUNCTUATION UC_CATEGORY_Po
0176 #define UC_SYMBOL UC_CATEGORY_S
0177 #define UC_MATH_SYMBOL UC_CATEGORY_Sm
0178 #define UC_CURRENCY_SYMBOL UC_CATEGORY_Sc
0179 #define UC_MODIFIER_SYMBOL UC_CATEGORY_Sk
0180 #define UC_OTHER_SYMBOL UC_CATEGORY_So
0181 #define UC_SEPARATOR UC_CATEGORY_Z
0182 #define UC_SPACE_SEPARATOR UC_CATEGORY_Zs
0183 #define UC_LINE_SEPARATOR UC_CATEGORY_Zl
0184 #define UC_PARAGRAPH_SEPARATOR UC_CATEGORY_Zp
0185 #define UC_OTHER UC_CATEGORY_C
0186 #define UC_CONTROL UC_CATEGORY_Cc
0187 #define UC_FORMAT UC_CATEGORY_Cf
0188 #define UC_SURROGATE UC_CATEGORY_Cs
0189 #define UC_PRIVATE_USE UC_CATEGORY_Co
0190 #define UC_UNASSIGNED UC_CATEGORY_Cn
0191
0192
0193
0194 extern uc_general_category_t
0195 uc_general_category_or (uc_general_category_t category1,
0196 uc_general_category_t category2);
0197
0198
0199
0200
0201 extern uc_general_category_t
0202 uc_general_category_and (uc_general_category_t category1,
0203 uc_general_category_t category2);
0204
0205
0206
0207
0208
0209 extern uc_general_category_t
0210 uc_general_category_and_not (uc_general_category_t category1,
0211 uc_general_category_t category2);
0212
0213
0214 extern const char *
0215 uc_general_category_name (uc_general_category_t category)
0216 _UC_ATTRIBUTE_PURE;
0217
0218
0219 extern const char *
0220 uc_general_category_long_name (uc_general_category_t category)
0221 _UC_ATTRIBUTE_PURE;
0222
0223
0224
0225 extern uc_general_category_t
0226 uc_general_category_byname (const char *category_name)
0227 _UC_ATTRIBUTE_PURE;
0228
0229
0230 extern uc_general_category_t
0231 uc_general_category (ucs4_t uc)
0232 _UC_ATTRIBUTE_PURE;
0233
0234
0235
0236
0237 extern bool
0238 uc_is_general_category (ucs4_t uc, uc_general_category_t category)
0239 _UC_ATTRIBUTE_PURE;
0240
0241 extern bool
0242 uc_is_general_category_withtable (ucs4_t uc, uint32_t bitmask)
0243 _UC_ATTRIBUTE_CONST;
0244
0245
0246
0247
0248
0249
0250
0251
0252 enum
0253 {
0254 UC_CCC_NR = 0,
0255 UC_CCC_OV = 1,
0256 UC_CCC_NK = 7,
0257 UC_CCC_KV = 8,
0258 UC_CCC_VR = 9,
0259 UC_CCC_ATBL = 200,
0260 UC_CCC_ATB = 202,
0261 UC_CCC_ATA = 214,
0262 UC_CCC_ATAR = 216,
0263 UC_CCC_BL = 218,
0264 UC_CCC_B = 220,
0265 UC_CCC_BR = 222,
0266 UC_CCC_L = 224,
0267 UC_CCC_R = 226,
0268 UC_CCC_AL = 228,
0269 UC_CCC_A = 230,
0270 UC_CCC_AR = 232,
0271 UC_CCC_DB = 233,
0272 UC_CCC_DA = 234,
0273 UC_CCC_IS = 240
0274 };
0275
0276
0277 extern int
0278 uc_combining_class (ucs4_t uc)
0279 _UC_ATTRIBUTE_CONST;
0280
0281
0282 extern const char *
0283 uc_combining_class_name (int ccc)
0284 _UC_ATTRIBUTE_CONST;
0285
0286
0287 extern const char *
0288 uc_combining_class_long_name (int ccc)
0289 _UC_ATTRIBUTE_CONST;
0290
0291
0292
0293 extern int
0294 uc_combining_class_byname (const char *ccc_name)
0295 _UC_ATTRIBUTE_PURE;
0296
0297
0298
0299
0300
0301
0302 enum
0303 {
0304 UC_BIDI_L,
0305 UC_BIDI_LRE,
0306 UC_BIDI_LRO,
0307 UC_BIDI_R,
0308 UC_BIDI_AL,
0309 UC_BIDI_RLE,
0310 UC_BIDI_RLO,
0311 UC_BIDI_PDF,
0312 UC_BIDI_EN,
0313 UC_BIDI_ES,
0314 UC_BIDI_ET,
0315 UC_BIDI_AN,
0316 UC_BIDI_CS,
0317 UC_BIDI_NSM,
0318 UC_BIDI_BN,
0319 UC_BIDI_B,
0320 UC_BIDI_S,
0321 UC_BIDI_WS,
0322 UC_BIDI_ON,
0323 UC_BIDI_LRI,
0324 UC_BIDI_RLI,
0325 UC_BIDI_FSI,
0326 UC_BIDI_PDI
0327 };
0328
0329
0330 extern const char *
0331 uc_bidi_class_name (int bidi_class)
0332 _UC_ATTRIBUTE_CONST;
0333
0334 extern const char *
0335 uc_bidi_category_name (int category)
0336 _UC_ATTRIBUTE_CONST;
0337
0338
0339 extern const char *
0340 uc_bidi_class_long_name (int bidi_class)
0341 _UC_ATTRIBUTE_CONST;
0342
0343
0344
0345 extern int
0346 uc_bidi_class_byname (const char *bidi_class_name)
0347 _UC_ATTRIBUTE_PURE;
0348
0349 extern int
0350 uc_bidi_category_byname (const char *category_name)
0351 _UC_ATTRIBUTE_PURE;
0352
0353
0354 extern int
0355 uc_bidi_class (ucs4_t uc)
0356 _UC_ATTRIBUTE_CONST;
0357
0358 extern int
0359 uc_bidi_category (ucs4_t uc)
0360 _UC_ATTRIBUTE_CONST;
0361
0362
0363 extern bool
0364 uc_is_bidi_class (ucs4_t uc, int bidi_class)
0365 _UC_ATTRIBUTE_CONST;
0366
0367 extern bool
0368 uc_is_bidi_category (ucs4_t uc, int category)
0369 _UC_ATTRIBUTE_CONST;
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381 extern int
0382 uc_decimal_value (ucs4_t uc)
0383 _UC_ATTRIBUTE_CONST;
0384
0385
0386
0387
0388
0389
0390 extern int
0391 uc_digit_value (ucs4_t uc)
0392 _UC_ATTRIBUTE_CONST;
0393
0394
0395
0396
0397
0398
0399 typedef struct
0400 {
0401 int numerator;
0402 int denominator;
0403 }
0404 uc_fraction_t;
0405 extern uc_fraction_t
0406 uc_numeric_value (ucs4_t uc)
0407 _UC_ATTRIBUTE_CONST;
0408
0409
0410
0411
0412
0413
0414 extern bool
0415 uc_mirror_char (ucs4_t uc, ucs4_t *puc);
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437 enum
0438 {
0439 UC_JOINING_TYPE_U,
0440 UC_JOINING_TYPE_T,
0441 UC_JOINING_TYPE_C,
0442 UC_JOINING_TYPE_L,
0443 UC_JOINING_TYPE_R,
0444 UC_JOINING_TYPE_D
0445 };
0446
0447
0448 extern const char *
0449 uc_joining_type_name (int joining_type)
0450 _UC_ATTRIBUTE_CONST;
0451
0452
0453 extern const char *
0454 uc_joining_type_long_name (int joining_type)
0455 _UC_ATTRIBUTE_CONST;
0456
0457
0458
0459 extern int
0460 uc_joining_type_byname (const char *joining_type_name)
0461 _UC_ATTRIBUTE_PURE;
0462
0463
0464 extern int
0465 uc_joining_type (ucs4_t uc)
0466 _UC_ATTRIBUTE_CONST;
0467
0468
0469
0470
0471
0472
0473
0474 enum
0475 {
0476 UC_JOINING_GROUP_NONE,
0477 UC_JOINING_GROUP_AIN,
0478 UC_JOINING_GROUP_ALAPH,
0479 UC_JOINING_GROUP_ALEF,
0480 UC_JOINING_GROUP_BEH,
0481 UC_JOINING_GROUP_BETH,
0482 UC_JOINING_GROUP_BURUSHASKI_YEH_BARREE,
0483 UC_JOINING_GROUP_DAL,
0484 UC_JOINING_GROUP_DALATH_RISH,
0485 UC_JOINING_GROUP_E,
0486 UC_JOINING_GROUP_FARSI_YEH,
0487 UC_JOINING_GROUP_FE,
0488 UC_JOINING_GROUP_FEH,
0489 UC_JOINING_GROUP_FINAL_SEMKATH,
0490 UC_JOINING_GROUP_GAF,
0491 UC_JOINING_GROUP_GAMAL,
0492 UC_JOINING_GROUP_HAH,
0493 UC_JOINING_GROUP_HE,
0494 UC_JOINING_GROUP_HEH,
0495 UC_JOINING_GROUP_HEH_GOAL,
0496 UC_JOINING_GROUP_HETH,
0497 UC_JOINING_GROUP_KAF,
0498 UC_JOINING_GROUP_KAPH,
0499 UC_JOINING_GROUP_KHAPH,
0500 UC_JOINING_GROUP_KNOTTED_HEH,
0501 UC_JOINING_GROUP_LAM,
0502 UC_JOINING_GROUP_LAMADH,
0503 UC_JOINING_GROUP_MEEM,
0504 UC_JOINING_GROUP_MIM,
0505 UC_JOINING_GROUP_NOON,
0506 UC_JOINING_GROUP_NUN,
0507 UC_JOINING_GROUP_NYA,
0508 UC_JOINING_GROUP_PE,
0509 UC_JOINING_GROUP_QAF,
0510 UC_JOINING_GROUP_QAPH,
0511 UC_JOINING_GROUP_REH,
0512 UC_JOINING_GROUP_REVERSED_PE,
0513 UC_JOINING_GROUP_SAD,
0514 UC_JOINING_GROUP_SADHE,
0515 UC_JOINING_GROUP_SEEN,
0516 UC_JOINING_GROUP_SEMKATH,
0517 UC_JOINING_GROUP_SHIN,
0518 UC_JOINING_GROUP_SWASH_KAF,
0519 UC_JOINING_GROUP_SYRIAC_WAW,
0520 UC_JOINING_GROUP_TAH,
0521 UC_JOINING_GROUP_TAW,
0522 UC_JOINING_GROUP_TEH_MARBUTA,
0523 UC_JOINING_GROUP_TEH_MARBUTA_GOAL,
0524 UC_JOINING_GROUP_TETH,
0525 UC_JOINING_GROUP_WAW,
0526 UC_JOINING_GROUP_YEH,
0527 UC_JOINING_GROUP_YEH_BARREE,
0528 UC_JOINING_GROUP_YEH_WITH_TAIL,
0529 UC_JOINING_GROUP_YUDH,
0530 UC_JOINING_GROUP_YUDH_HE,
0531 UC_JOINING_GROUP_ZAIN,
0532 UC_JOINING_GROUP_ZHAIN,
0533 UC_JOINING_GROUP_ROHINGYA_YEH,
0534 UC_JOINING_GROUP_STRAIGHT_WAW,
0535 UC_JOINING_GROUP_MANICHAEAN_ALEPH,
0536 UC_JOINING_GROUP_MANICHAEAN_BETH,
0537 UC_JOINING_GROUP_MANICHAEAN_GIMEL,
0538 UC_JOINING_GROUP_MANICHAEAN_DALETH,
0539 UC_JOINING_GROUP_MANICHAEAN_WAW,
0540 UC_JOINING_GROUP_MANICHAEAN_ZAYIN,
0541 UC_JOINING_GROUP_MANICHAEAN_HETH,
0542 UC_JOINING_GROUP_MANICHAEAN_TETH,
0543 UC_JOINING_GROUP_MANICHAEAN_YODH,
0544 UC_JOINING_GROUP_MANICHAEAN_KAPH,
0545 UC_JOINING_GROUP_MANICHAEAN_LAMEDH,
0546 UC_JOINING_GROUP_MANICHAEAN_DHAMEDH,
0547 UC_JOINING_GROUP_MANICHAEAN_THAMEDH,
0548 UC_JOINING_GROUP_MANICHAEAN_MEM,
0549 UC_JOINING_GROUP_MANICHAEAN_NUN,
0550 UC_JOINING_GROUP_MANICHAEAN_SAMEKH,
0551 UC_JOINING_GROUP_MANICHAEAN_AYIN,
0552 UC_JOINING_GROUP_MANICHAEAN_PE,
0553 UC_JOINING_GROUP_MANICHAEAN_SADHE,
0554 UC_JOINING_GROUP_MANICHAEAN_QOPH,
0555 UC_JOINING_GROUP_MANICHAEAN_RESH,
0556 UC_JOINING_GROUP_MANICHAEAN_TAW,
0557 UC_JOINING_GROUP_MANICHAEAN_ONE,
0558 UC_JOINING_GROUP_MANICHAEAN_FIVE,
0559 UC_JOINING_GROUP_MANICHAEAN_TEN,
0560 UC_JOINING_GROUP_MANICHAEAN_TWENTY,
0561 UC_JOINING_GROUP_MANICHAEAN_HUNDRED,
0562 UC_JOINING_GROUP_AFRICAN_FEH,
0563 UC_JOINING_GROUP_AFRICAN_QAF,
0564 UC_JOINING_GROUP_AFRICAN_NOON,
0565 UC_JOINING_GROUP_MALAYALAM_NGA,
0566 UC_JOINING_GROUP_MALAYALAM_JA,
0567 UC_JOINING_GROUP_MALAYALAM_NYA,
0568 UC_JOINING_GROUP_MALAYALAM_TTA,
0569 UC_JOINING_GROUP_MALAYALAM_NNA,
0570 UC_JOINING_GROUP_MALAYALAM_NNNA,
0571 UC_JOINING_GROUP_MALAYALAM_BHA,
0572 UC_JOINING_GROUP_MALAYALAM_RA,
0573 UC_JOINING_GROUP_MALAYALAM_LLA,
0574 UC_JOINING_GROUP_MALAYALAM_LLLA,
0575 UC_JOINING_GROUP_MALAYALAM_SSA,
0576 UC_JOINING_GROUP_HANIFI_ROHINGYA_PA,
0577 UC_JOINING_GROUP_HANIFI_ROHINGYA_KINNA_YA,
0578 UC_JOINING_GROUP_THIN_YEH,
0579 UC_JOINING_GROUP_VERTICAL_TAIL
0580 };
0581
0582
0583 extern const char *
0584 uc_joining_group_name (int joining_group)
0585 _UC_ATTRIBUTE_CONST;
0586
0587
0588 extern int
0589 uc_joining_group_byname (const char *joining_group_name)
0590 _UC_ATTRIBUTE_PURE;
0591
0592
0593 extern int
0594 uc_joining_group (ucs4_t uc)
0595 _UC_ATTRIBUTE_CONST;
0596
0597
0598
0599
0600
0601
0602
0603
0604 typedef struct
0605 {
0606 bool (*test_fn) (ucs4_t uc);
0607 }
0608 uc_property_t;
0609
0610
0611
0612 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_WHITE_SPACE;
0613 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ALPHABETIC;
0614 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_ALPHABETIC;
0615 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_NOT_A_CHARACTER;
0616 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT;
0617 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT;
0618 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DEPRECATED;
0619 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION;
0620 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_VARIATION_SELECTOR;
0621 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PRIVATE_USE;
0622 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE;
0623
0624 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_UPPERCASE;
0625 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_UPPERCASE;
0626 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LOWERCASE;
0627 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_LOWERCASE;
0628 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_TITLECASE;
0629 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CASED;
0630 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CASE_IGNORABLE;
0631 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CHANGES_WHEN_LOWERCASED;
0632 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CHANGES_WHEN_UPPERCASED;
0633 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CHANGES_WHEN_TITLECASED;
0634 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEFOLDED;
0635 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEMAPPED;
0636 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_SOFT_DOTTED;
0637
0638 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ID_START;
0639 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_ID_START;
0640 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ID_CONTINUE;
0641 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE;
0642 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_XID_START;
0643 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_XID_CONTINUE;
0644 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ID_COMPAT_MATH_START;
0645 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ID_COMPAT_MATH_CONTINUE;
0646 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE;
0647 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PATTERN_SYNTAX;
0648
0649 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_JOIN_CONTROL;
0650 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_GRAPHEME_BASE;
0651 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_GRAPHEME_EXTEND;
0652 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND;
0653 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_GRAPHEME_LINK;
0654
0655 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_CONTROL;
0656 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT;
0657 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT;
0658 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT;
0659 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT;
0660 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR;
0661 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR;
0662 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT;
0663 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR;
0664 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR;
0665 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR;
0666 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_WHITESPACE;
0667 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK;
0668 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL;
0669 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_PDF;
0670 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE;
0671 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL;
0672
0673 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_HEX_DIGIT;
0674 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT;
0675
0676 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDEOGRAPHIC;
0677 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH;
0678 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_RADICAL;
0679 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDS_UNARY_OPERATOR;
0680 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR;
0681 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR;
0682
0683 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EMOJI;
0684 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EMOJI_PRESENTATION;
0685 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EMOJI_MODIFIER;
0686 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EMOJI_MODIFIER_BASE;
0687 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EMOJI_COMPONENT;
0688 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EXTENDED_PICTOGRAPHIC;
0689
0690 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ZERO_WIDTH;
0691 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_SPACE;
0692 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_NON_BREAK;
0693 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ISO_CONTROL;
0694 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_FORMAT_CONTROL;
0695 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PREPENDED_CONCATENATION_MARK;
0696 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DASH;
0697 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_HYPHEN;
0698 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PUNCTUATION;
0699 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LINE_SEPARATOR;
0700 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR;
0701 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_QUOTATION_MARK;
0702 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_SENTENCE_TERMINAL;
0703 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION;
0704 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CURRENCY_SYMBOL;
0705 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_MATH;
0706 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_MATH;
0707 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION;
0708 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LEFT_OF_PAIR;
0709 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_COMBINING;
0710 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_COMPOSITE;
0711 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DECIMAL_DIGIT;
0712 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_NUMERIC;
0713 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DIACRITIC;
0714 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EXTENDER;
0715 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IGNORABLE_CONTROL;
0716 extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_REGIONAL_INDICATOR;
0717
0718
0719 extern uc_property_t
0720 uc_property_byname (const char *property_name);
0721
0722
0723 #define uc_property_is_valid(property) ((property).test_fn != NULL)
0724
0725
0726 extern bool
0727 uc_is_property (ucs4_t uc, uc_property_t property);
0728 extern bool uc_is_property_white_space (ucs4_t uc)
0729 _UC_ATTRIBUTE_CONST;
0730 extern bool uc_is_property_alphabetic (ucs4_t uc)
0731 _UC_ATTRIBUTE_CONST;
0732 extern bool uc_is_property_other_alphabetic (ucs4_t uc)
0733 _UC_ATTRIBUTE_CONST;
0734 extern bool uc_is_property_not_a_character (ucs4_t uc)
0735 _UC_ATTRIBUTE_CONST;
0736 extern bool uc_is_property_default_ignorable_code_point (ucs4_t uc)
0737 _UC_ATTRIBUTE_CONST;
0738 extern bool uc_is_property_other_default_ignorable_code_point (ucs4_t uc)
0739 _UC_ATTRIBUTE_CONST;
0740 extern bool uc_is_property_deprecated (ucs4_t uc)
0741 _UC_ATTRIBUTE_CONST;
0742 extern bool uc_is_property_logical_order_exception (ucs4_t uc)
0743 _UC_ATTRIBUTE_CONST;
0744 extern bool uc_is_property_variation_selector (ucs4_t uc)
0745 _UC_ATTRIBUTE_CONST;
0746 extern bool uc_is_property_private_use (ucs4_t uc)
0747 _UC_ATTRIBUTE_CONST;
0748 extern bool uc_is_property_unassigned_code_value (ucs4_t uc)
0749 _UC_ATTRIBUTE_CONST;
0750 extern bool uc_is_property_uppercase (ucs4_t uc)
0751 _UC_ATTRIBUTE_CONST;
0752 extern bool uc_is_property_other_uppercase (ucs4_t uc)
0753 _UC_ATTRIBUTE_CONST;
0754 extern bool uc_is_property_lowercase (ucs4_t uc)
0755 _UC_ATTRIBUTE_CONST;
0756 extern bool uc_is_property_other_lowercase (ucs4_t uc)
0757 _UC_ATTRIBUTE_CONST;
0758 extern bool uc_is_property_titlecase (ucs4_t uc)
0759 _UC_ATTRIBUTE_CONST;
0760 extern bool uc_is_property_cased (ucs4_t uc)
0761 _UC_ATTRIBUTE_CONST;
0762 extern bool uc_is_property_case_ignorable (ucs4_t uc)
0763 _UC_ATTRIBUTE_CONST;
0764 extern bool uc_is_property_changes_when_lowercased (ucs4_t uc)
0765 _UC_ATTRIBUTE_CONST;
0766 extern bool uc_is_property_changes_when_uppercased (ucs4_t uc)
0767 _UC_ATTRIBUTE_CONST;
0768 extern bool uc_is_property_changes_when_titlecased (ucs4_t uc)
0769 _UC_ATTRIBUTE_CONST;
0770 extern bool uc_is_property_changes_when_casefolded (ucs4_t uc)
0771 _UC_ATTRIBUTE_CONST;
0772 extern bool uc_is_property_changes_when_casemapped (ucs4_t uc)
0773 _UC_ATTRIBUTE_CONST;
0774 extern bool uc_is_property_soft_dotted (ucs4_t uc)
0775 _UC_ATTRIBUTE_CONST;
0776 extern bool uc_is_property_id_start (ucs4_t uc)
0777 _UC_ATTRIBUTE_CONST;
0778 extern bool uc_is_property_other_id_start (ucs4_t uc)
0779 _UC_ATTRIBUTE_CONST;
0780 extern bool uc_is_property_id_continue (ucs4_t uc)
0781 _UC_ATTRIBUTE_CONST;
0782 extern bool uc_is_property_other_id_continue (ucs4_t uc)
0783 _UC_ATTRIBUTE_CONST;
0784 extern bool uc_is_property_xid_start (ucs4_t uc)
0785 _UC_ATTRIBUTE_CONST;
0786 extern bool uc_is_property_xid_continue (ucs4_t uc)
0787 _UC_ATTRIBUTE_CONST;
0788 extern bool uc_is_property_id_compat_math_start (ucs4_t uc)
0789 _UC_ATTRIBUTE_CONST;
0790 extern bool uc_is_property_id_compat_math_continue (ucs4_t uc)
0791 _UC_ATTRIBUTE_CONST;
0792 extern bool uc_is_property_pattern_white_space (ucs4_t uc)
0793 _UC_ATTRIBUTE_CONST;
0794 extern bool uc_is_property_pattern_syntax (ucs4_t uc)
0795 _UC_ATTRIBUTE_CONST;
0796 extern bool uc_is_property_join_control (ucs4_t uc)
0797 _UC_ATTRIBUTE_CONST;
0798 extern bool uc_is_property_grapheme_base (ucs4_t uc)
0799 _UC_ATTRIBUTE_CONST;
0800 extern bool uc_is_property_grapheme_extend (ucs4_t uc)
0801 _UC_ATTRIBUTE_CONST;
0802 extern bool uc_is_property_other_grapheme_extend (ucs4_t uc)
0803 _UC_ATTRIBUTE_CONST;
0804 extern bool uc_is_property_grapheme_link (ucs4_t uc)
0805 _UC_ATTRIBUTE_CONST;
0806 extern bool uc_is_property_bidi_control (ucs4_t uc)
0807 _UC_ATTRIBUTE_CONST;
0808 extern bool uc_is_property_bidi_left_to_right (ucs4_t uc)
0809 _UC_ATTRIBUTE_CONST;
0810 extern bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc)
0811 _UC_ATTRIBUTE_CONST;
0812 extern bool uc_is_property_bidi_arabic_right_to_left (ucs4_t uc)
0813 _UC_ATTRIBUTE_CONST;
0814 extern bool uc_is_property_bidi_european_digit (ucs4_t uc)
0815 _UC_ATTRIBUTE_CONST;
0816 extern bool uc_is_property_bidi_eur_num_separator (ucs4_t uc)
0817 _UC_ATTRIBUTE_CONST;
0818 extern bool uc_is_property_bidi_eur_num_terminator (ucs4_t uc)
0819 _UC_ATTRIBUTE_CONST;
0820 extern bool uc_is_property_bidi_arabic_digit (ucs4_t uc)
0821 _UC_ATTRIBUTE_CONST;
0822 extern bool uc_is_property_bidi_common_separator (ucs4_t uc)
0823 _UC_ATTRIBUTE_CONST;
0824 extern bool uc_is_property_bidi_block_separator (ucs4_t uc)
0825 _UC_ATTRIBUTE_CONST;
0826 extern bool uc_is_property_bidi_segment_separator (ucs4_t uc)
0827 _UC_ATTRIBUTE_CONST;
0828 extern bool uc_is_property_bidi_whitespace (ucs4_t uc)
0829 _UC_ATTRIBUTE_CONST;
0830 extern bool uc_is_property_bidi_non_spacing_mark (ucs4_t uc)
0831 _UC_ATTRIBUTE_CONST;
0832 extern bool uc_is_property_bidi_boundary_neutral (ucs4_t uc)
0833 _UC_ATTRIBUTE_CONST;
0834 extern bool uc_is_property_bidi_pdf (ucs4_t uc)
0835 _UC_ATTRIBUTE_CONST;
0836 extern bool uc_is_property_bidi_embedding_or_override (ucs4_t uc)
0837 _UC_ATTRIBUTE_CONST;
0838 extern bool uc_is_property_bidi_other_neutral (ucs4_t uc)
0839 _UC_ATTRIBUTE_CONST;
0840 extern bool uc_is_property_hex_digit (ucs4_t uc)
0841 _UC_ATTRIBUTE_CONST;
0842 extern bool uc_is_property_ascii_hex_digit (ucs4_t uc)
0843 _UC_ATTRIBUTE_CONST;
0844 extern bool uc_is_property_ideographic (ucs4_t uc)
0845 _UC_ATTRIBUTE_CONST;
0846 extern bool uc_is_property_unified_ideograph (ucs4_t uc)
0847 _UC_ATTRIBUTE_CONST;
0848 extern bool uc_is_property_radical (ucs4_t uc)
0849 _UC_ATTRIBUTE_CONST;
0850 extern bool uc_is_property_ids_unary_operator (ucs4_t uc)
0851 _UC_ATTRIBUTE_CONST;
0852 extern bool uc_is_property_ids_binary_operator (ucs4_t uc)
0853 _UC_ATTRIBUTE_CONST;
0854 extern bool uc_is_property_ids_trinary_operator (ucs4_t uc)
0855 _UC_ATTRIBUTE_CONST;
0856 extern bool uc_is_property_emoji (ucs4_t uc)
0857 _UC_ATTRIBUTE_CONST;
0858 extern bool uc_is_property_emoji_presentation (ucs4_t uc)
0859 _UC_ATTRIBUTE_CONST;
0860 extern bool uc_is_property_emoji_modifier (ucs4_t uc)
0861 _UC_ATTRIBUTE_CONST;
0862 extern bool uc_is_property_emoji_modifier_base (ucs4_t uc)
0863 _UC_ATTRIBUTE_CONST;
0864 extern bool uc_is_property_emoji_component (ucs4_t uc)
0865 _UC_ATTRIBUTE_CONST;
0866 extern bool uc_is_property_extended_pictographic (ucs4_t uc)
0867 _UC_ATTRIBUTE_CONST;
0868 extern bool uc_is_property_zero_width (ucs4_t uc)
0869 _UC_ATTRIBUTE_CONST;
0870 extern bool uc_is_property_space (ucs4_t uc)
0871 _UC_ATTRIBUTE_CONST;
0872 extern bool uc_is_property_non_break (ucs4_t uc)
0873 _UC_ATTRIBUTE_CONST;
0874 extern bool uc_is_property_iso_control (ucs4_t uc)
0875 _UC_ATTRIBUTE_CONST;
0876 extern bool uc_is_property_format_control (ucs4_t uc)
0877 _UC_ATTRIBUTE_CONST;
0878 extern bool uc_is_property_prepended_concatenation_mark (ucs4_t uc)
0879 _UC_ATTRIBUTE_CONST;
0880 extern bool uc_is_property_dash (ucs4_t uc)
0881 _UC_ATTRIBUTE_CONST;
0882 extern bool uc_is_property_hyphen (ucs4_t uc)
0883 _UC_ATTRIBUTE_CONST;
0884 extern bool uc_is_property_punctuation (ucs4_t uc)
0885 _UC_ATTRIBUTE_CONST;
0886 extern bool uc_is_property_line_separator (ucs4_t uc)
0887 _UC_ATTRIBUTE_CONST;
0888 extern bool uc_is_property_paragraph_separator (ucs4_t uc)
0889 _UC_ATTRIBUTE_CONST;
0890 extern bool uc_is_property_quotation_mark (ucs4_t uc)
0891 _UC_ATTRIBUTE_CONST;
0892 extern bool uc_is_property_sentence_terminal (ucs4_t uc)
0893 _UC_ATTRIBUTE_CONST;
0894 extern bool uc_is_property_terminal_punctuation (ucs4_t uc)
0895 _UC_ATTRIBUTE_CONST;
0896 extern bool uc_is_property_currency_symbol (ucs4_t uc)
0897 _UC_ATTRIBUTE_CONST;
0898 extern bool uc_is_property_math (ucs4_t uc)
0899 _UC_ATTRIBUTE_CONST;
0900 extern bool uc_is_property_other_math (ucs4_t uc)
0901 _UC_ATTRIBUTE_CONST;
0902 extern bool uc_is_property_paired_punctuation (ucs4_t uc)
0903 _UC_ATTRIBUTE_CONST;
0904 extern bool uc_is_property_left_of_pair (ucs4_t uc)
0905 _UC_ATTRIBUTE_CONST;
0906 extern bool uc_is_property_combining (ucs4_t uc)
0907 _UC_ATTRIBUTE_CONST;
0908 extern bool uc_is_property_composite (ucs4_t uc)
0909 _UC_ATTRIBUTE_CONST;
0910 extern bool uc_is_property_decimal_digit (ucs4_t uc)
0911 _UC_ATTRIBUTE_CONST;
0912 extern bool uc_is_property_numeric (ucs4_t uc)
0913 _UC_ATTRIBUTE_CONST;
0914 extern bool uc_is_property_diacritic (ucs4_t uc)
0915 _UC_ATTRIBUTE_CONST;
0916 extern bool uc_is_property_extender (ucs4_t uc)
0917 _UC_ATTRIBUTE_CONST;
0918 extern bool uc_is_property_ignorable_control (ucs4_t uc)
0919 _UC_ATTRIBUTE_CONST;
0920 extern bool uc_is_property_regional_indicator (ucs4_t uc)
0921 _UC_ATTRIBUTE_CONST;
0922
0923
0924
0925
0926
0927
0928
0929
0930
0931
0932
0933
0934 enum
0935 {
0936 UC_INDIC_CONJUNCT_BREAK_NONE,
0937 UC_INDIC_CONJUNCT_BREAK_CONSONANT,
0938 UC_INDIC_CONJUNCT_BREAK_LINKER,
0939 UC_INDIC_CONJUNCT_BREAK_EXTEND
0940 };
0941
0942
0943 extern const char *
0944 uc_indic_conjunct_break_name (int indic_conjunct_break)
0945 _UC_ATTRIBUTE_CONST;
0946
0947
0948 extern int
0949 uc_indic_conjunct_break_byname (const char *indic_conjunct_break_name)
0950 _UC_ATTRIBUTE_PURE;
0951
0952
0953 extern int
0954 uc_indic_conjunct_break (ucs4_t uc)
0955 _UC_ATTRIBUTE_CONST;
0956
0957
0958
0959
0960
0961 typedef struct
0962 {
0963 unsigned int code : 21;
0964 unsigned int start : 1;
0965 unsigned int end : 1;
0966 }
0967 uc_interval_t;
0968 typedef struct
0969 {
0970 unsigned int nintervals;
0971 const uc_interval_t *intervals;
0972 const char *name;
0973 }
0974 uc_script_t;
0975
0976
0977 extern const uc_script_t *
0978 uc_script (ucs4_t uc)
0979 _UC_ATTRIBUTE_CONST;
0980
0981
0982 extern const uc_script_t *
0983 uc_script_byname (const char *script_name)
0984 _UC_ATTRIBUTE_PURE;
0985
0986
0987 extern bool
0988 uc_is_script (ucs4_t uc, const uc_script_t *script)
0989 _UC_ATTRIBUTE_PURE;
0990
0991
0992 extern void
0993 uc_all_scripts (const uc_script_t **scripts, size_t *count);
0994
0995
0996
0997
0998
0999 typedef struct
1000 {
1001 ucs4_t start;
1002 ucs4_t end;
1003 const char *name;
1004 }
1005 uc_block_t;
1006
1007
1008 extern const uc_block_t *
1009 uc_block (ucs4_t uc)
1010 _UC_ATTRIBUTE_CONST;
1011
1012
1013 extern bool
1014 uc_is_block (ucs4_t uc, const uc_block_t *block)
1015 _UC_ATTRIBUTE_PURE;
1016
1017
1018 extern void
1019 uc_all_blocks (const uc_block_t **blocks, size_t *count);
1020
1021
1022
1023
1024
1025
1026 extern bool
1027 uc_is_c_whitespace (ucs4_t uc)
1028 _UC_ATTRIBUTE_CONST;
1029
1030
1031 extern bool
1032 uc_is_java_whitespace (ucs4_t uc)
1033 _UC_ATTRIBUTE_CONST;
1034
1035 enum
1036 {
1037 UC_IDENTIFIER_START,
1038 UC_IDENTIFIER_VALID,
1039 UC_IDENTIFIER_INVALID,
1040 UC_IDENTIFIER_IGNORABLE
1041 };
1042
1043
1044
1045 extern int
1046 uc_c_ident_category (ucs4_t uc)
1047 _UC_ATTRIBUTE_CONST;
1048
1049
1050
1051 extern int
1052 uc_java_ident_category (ucs4_t uc)
1053 _UC_ATTRIBUTE_CONST;
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064 extern bool
1065 uc_is_alnum (ucs4_t uc)
1066 _UC_ATTRIBUTE_CONST;
1067
1068
1069
1070
1071
1072 extern bool
1073 uc_is_alpha (ucs4_t uc)
1074 _UC_ATTRIBUTE_CONST;
1075
1076
1077 extern bool
1078 uc_is_cntrl (ucs4_t uc)
1079 _UC_ATTRIBUTE_CONST;
1080
1081
1082 extern bool
1083 uc_is_digit (ucs4_t uc)
1084 _UC_ATTRIBUTE_CONST;
1085
1086
1087
1088 extern bool
1089 uc_is_graph (ucs4_t uc)
1090 _UC_ATTRIBUTE_CONST;
1091
1092
1093
1094
1095 extern bool
1096 uc_is_lower (ucs4_t uc)
1097 _UC_ATTRIBUTE_CONST;
1098
1099
1100 extern bool
1101 uc_is_print (ucs4_t uc)
1102 _UC_ATTRIBUTE_CONST;
1103
1104
1105
1106 extern bool
1107 uc_is_punct (ucs4_t uc)
1108 _UC_ATTRIBUTE_CONST;
1109
1110
1111
1112
1113 extern bool
1114 uc_is_space (ucs4_t uc)
1115 _UC_ATTRIBUTE_CONST;
1116
1117
1118
1119
1120 extern bool
1121 uc_is_upper (ucs4_t uc)
1122 _UC_ATTRIBUTE_CONST;
1123
1124
1125
1126 extern bool
1127 uc_is_xdigit (ucs4_t uc)
1128 _UC_ATTRIBUTE_CONST;
1129
1130
1131
1132
1133 extern bool
1134 uc_is_blank (ucs4_t uc)
1135 _UC_ATTRIBUTE_CONST;
1136
1137
1138
1139 #ifdef __cplusplus
1140 }
1141 #endif
1142
1143 #endif