1 module derelict.utf8proc.types; 2 3 alias utf8proc_int8_t = byte; 4 alias utf8proc_uint8_t = ubyte; 5 alias utf8proc_int16_t = short; 6 alias utf8proc_uint16_t = ushort; 7 alias utf8proc_int32_t = int; 8 alias utf8proc_uint32_t = uint; 9 alias utf8proc_size_t = size_t; 10 alias utf8proc_ssize_t = ptrdiff_t; 11 alias utf8proc_bool = bool; 12 13 /** The MAJOR version number (increased when backwards API compatibility is broken). */ 14 enum UTF8PROC_VERSION_MAJOR = 2; 15 /** The MINOR version number (increased when new functionality is added in a backwards-compatible manner). */ 16 enum UTF8PROC_VERSION_MINOR = 1; 17 /** The PATCH version (increased for fixes that do not change the API). */ 18 enum UTF8PROC_VERSION_PATCH = 1; 19 20 /** 21 * Option flags used by several functions in the library. 22 */ 23 enum utf8proc_option_t 24 { 25 /** The given UTF-8 input is NULL terminated. */ 26 UTF8PROC_NULLTERM = (1 << 0), 27 /** Unicode Versioning Stability has to be respected. */ 28 UTF8PROC_STABLE = (1 << 1), 29 /** Compatibility decomposition (i.e. formatting information is lost). */ 30 UTF8PROC_COMPAT = (1 << 2), 31 /** Return a result with decomposed characters. */ 32 UTF8PROC_COMPOSE = (1 << 3), 33 /** Return a result with decomposed characters. */ 34 UTF8PROC_DECOMPOSE = (1 << 4), 35 /** Strip "default ignorable characters" such as SOFT-HYPHEN or ZERO-WIDTH-SPACE. */ 36 UTF8PROC_IGNORE = (1 << 5), 37 /** Return an error, if the input contains unassigned codepoints. */ 38 UTF8PROC_REJECTNA = (1 << 6), 39 /** 40 * Indicating that NLF-sequences (LF, CRLF, CR, NEL) are representing a 41 * line break, and should be converted to the codepoint for line 42 * separation (LS). 43 */ 44 UTF8PROC_NLF2LS = (1 << 7), 45 /** 46 * Indicating that NLF-sequences are representing a paragraph break, and 47 * should be converted to the codepoint for paragraph separation 48 * (PS). 49 */ 50 UTF8PROC_NLF2PS = (1 << 8), 51 /** Indicating that the meaning of NLF-sequences is unknown. */ 52 UTF8PROC_NLF2LF = (UTF8PROC_NLF2LS | UTF8PROC_NLF2PS), 53 /** Strips and/or convers control characters. 54 * 55 * NLF-sequences are transformed into space, except if one of the 56 * NLF2LS/PS/LF options is given. HorizontalTab (HT) and FormFeed (FF) 57 * are treated as a NLF-sequence in this case. All other control 58 * characters are simply removed. 59 */ 60 UTF8PROC_STRIPCC = (1 << 9), 61 /** 62 * Performs unicode case folding, to be able to do a case-insensitive 63 * string comparison. 64 */ 65 UTF8PROC_CASEFOLD = (1 << 10), 66 /** 67 * Inserts 0xFF bytes at the beginning of each sequence which is 68 * representing a single grapheme cluster (see UAX#29). 69 */ 70 UTF8PROC_CHARBOUND = (1 << 11), 71 /** Lumps certain characters together. 72 * 73 * E.g. HYPHEN U+2010 and MINUS U+2212 to ASCII "-". See lump.md for details. 74 * 75 * If NLF2LF is set, this includes a transformation of paragraph and 76 * line separators to ASCII line-feed (LF). 77 */ 78 UTF8PROC_LUMP = (1 << 12), 79 /** Strips all character markings. 80 * 81 * This includes non-spacing, spacing and enclosing (i.e. accents). 82 * @note This option works only with @ref UTF8PROC_COMPOSE or 83 * @ref UTF8PROC_DECOMPOSE 84 */ 85 UTF8PROC_STRIPMARK = (1 << 13), 86 } 87 88 enum UTF8PROC_NULLTERM = utf8proc_option_t.UTF8PROC_NULLTERM; 89 enum UTF8PROC_STABLE = utf8proc_option_t.UTF8PROC_STABLE; 90 enum UTF8PROC_COMPAT = utf8proc_option_t.UTF8PROC_COMPAT; 91 enum UTF8PROC_COMPOSE = utf8proc_option_t.UTF8PROC_COMPOSE; 92 enum UTF8PROC_DECOMPOSE = utf8proc_option_t.UTF8PROC_DECOMPOSE; 93 enum UTF8PROC_IGNORE = utf8proc_option_t.UTF8PROC_IGNORE; 94 enum UTF8PROC_REJECTNA = utf8proc_option_t.UTF8PROC_REJECTNA; 95 enum UTF8PROC_NLF2LS = utf8proc_option_t.UTF8PROC_NLF2LS; 96 enum UTF8PROC_NLF2PS = utf8proc_option_t.UTF8PROC_NLF2PS; 97 enum UTF8PROC_NLF2LF = utf8proc_option_t.UTF8PROC_NLF2LF; 98 enum UTF8PROC_STRIPCC = utf8proc_option_t.UTF8PROC_STRIPCC; 99 enum UTF8PROC_CASEFOLD = utf8proc_option_t.UTF8PROC_CASEFOLD; 100 enum UTF8PROC_CHARBOUND = utf8proc_option_t.UTF8PROC_CHARBOUND; 101 enum UTF8PROC_LUMP = utf8proc_option_t.UTF8PROC_LUMP; 102 enum UTF8PROC_STRIPMARK = utf8proc_option_t.UTF8PROC_STRIPMARK; 103 104 /** Memory could not be allocated. */ 105 enum UTF8PROC_ERROR_NOMEM = -1; 106 /** The given string is too long to be processed. */ 107 enum UTF8PROC_ERROR_OVERFLOW = -2; 108 /** The given string is not a legal UTF-8 string. */ 109 enum UTF8PROC_ERROR_INVALIDUTF8 = -3; 110 /** The @ref UTF8PROC_REJECTNA flag was set and an unassigned codepoint was found. */ 111 enum UTF8PROC_ERROR_NOTASSIGNED = -4; 112 /** Invalid options have been used. */ 113 enum UTF8PROC_ERROR_INVALIDOPTS = -5; 114 115 /** Holds the value of a property. */ 116 alias utf8proc_propval_t = utf8proc_int16_t; 117 118 /** Struct containing information about a codepoint. */ 119 alias utf8proc_property_t = utf8proc_property_struct; 120 struct utf8proc_property_struct 121 { 122 import std.bitmanip : bitfields; 123 124 align(4): 125 /** 126 * Unicode category. 127 * @see utf8proc_category_t. 128 */ 129 utf8proc_propval_t category; 130 utf8proc_propval_t combining_class; 131 /** 132 * Bidirectional class. 133 * @see utf8proc_bidi_class_t. 134 */ 135 utf8proc_propval_t bidi_class; 136 /** 137 * @anchor Decomposition type. 138 * @see utf8proc_decomp_type_t. 139 */ 140 utf8proc_propval_t decomp_type; 141 utf8proc_uint16_t decomp_seqindex; 142 utf8proc_uint16_t casefold_seqindex; 143 utf8proc_uint16_t uppercase_seqindex; 144 utf8proc_uint16_t lowercase_seqindex; 145 utf8proc_uint16_t titlecase_seqindex; 146 utf8proc_uint16_t comb_index; 147 148 //dfmt off 149 mixin(bitfields!( 150 bool, "bidi_mirrored", 1, 151 bool, "comp_exclusion", 1, 152 bool, "ignorable", 1, 153 bool, "control_boundary", 1, 154 uint, "charwidth", 2, 155 uint, "pad", 2, 156 uint, "boundclass", 8, 157 )); 158 // dfmt on 159 } 160 161 /** Unicode categories. */ 162 enum utf8proc_category_t 163 { 164 UTF8PROC_CATEGORY_CN = 0, /**< Other, not assigned */ 165 UTF8PROC_CATEGORY_LU = 1, /**< Letter, uppercase */ 166 UTF8PROC_CATEGORY_LL = 2, /**< Letter, lowercase */ 167 UTF8PROC_CATEGORY_LT = 3, /**< Letter, titlecase */ 168 UTF8PROC_CATEGORY_LM = 4, /**< Letter, modifier */ 169 UTF8PROC_CATEGORY_LO = 5, /**< Letter, other */ 170 UTF8PROC_CATEGORY_MN = 6, /**< Mark, nonspacing */ 171 UTF8PROC_CATEGORY_MC = 7, /**< Mark, spacing combining */ 172 UTF8PROC_CATEGORY_ME = 8, /**< Mark, enclosing */ 173 UTF8PROC_CATEGORY_ND = 9, /**< Number, decimal digit */ 174 UTF8PROC_CATEGORY_NL = 10, /**< Number, letter */ 175 UTF8PROC_CATEGORY_NO = 11, /**< Number, other */ 176 UTF8PROC_CATEGORY_PC = 12, /**< Punctuation, connector */ 177 UTF8PROC_CATEGORY_PD = 13, /**< Punctuation, dash */ 178 UTF8PROC_CATEGORY_PS = 14, /**< Punctuation, open */ 179 UTF8PROC_CATEGORY_PE = 15, /**< Punctuation, close */ 180 UTF8PROC_CATEGORY_PI = 16, /**< Punctuation, initial quote */ 181 UTF8PROC_CATEGORY_PF = 17, /**< Punctuation, final quote */ 182 UTF8PROC_CATEGORY_PO = 18, /**< Punctuation, other */ 183 UTF8PROC_CATEGORY_SM = 19, /**< Symbol, math */ 184 UTF8PROC_CATEGORY_SC = 20, /**< Symbol, currency */ 185 UTF8PROC_CATEGORY_SK = 21, /**< Symbol, modifier */ 186 UTF8PROC_CATEGORY_SO = 22, /**< Symbol, other */ 187 UTF8PROC_CATEGORY_ZS = 23, /**< Separator, space */ 188 UTF8PROC_CATEGORY_ZL = 24, /**< Separator, line */ 189 UTF8PROC_CATEGORY_ZP = 25, /**< Separator, paragraph */ 190 UTF8PROC_CATEGORY_CC = 26, /**< Other, control */ 191 UTF8PROC_CATEGORY_CF = 27, /**< Other, format */ 192 UTF8PROC_CATEGORY_CS = 28, /**< Other, surrogate */ 193 UTF8PROC_CATEGORY_CO = 29, /**< Other, private use */ 194 195 196 197 } 198 199 enum UTF8PROC_CATEGORY_CN = utf8proc_category_t.UTF8PROC_CATEGORY_CN; 200 enum UTF8PROC_CATEGORY_LU = utf8proc_category_t.UTF8PROC_CATEGORY_LU; 201 enum UTF8PROC_CATEGORY_LL = utf8proc_category_t.UTF8PROC_CATEGORY_LL; 202 enum UTF8PROC_CATEGORY_LT = utf8proc_category_t.UTF8PROC_CATEGORY_LT; 203 enum UTF8PROC_CATEGORY_LM = utf8proc_category_t.UTF8PROC_CATEGORY_LM; 204 enum UTF8PROC_CATEGORY_LO = utf8proc_category_t.UTF8PROC_CATEGORY_LO; 205 enum UTF8PROC_CATEGORY_MN = utf8proc_category_t.UTF8PROC_CATEGORY_MN; 206 enum UTF8PROC_CATEGORY_MC = utf8proc_category_t.UTF8PROC_CATEGORY_MC; 207 enum UTF8PROC_CATEGORY_ME = utf8proc_category_t.UTF8PROC_CATEGORY_ME; 208 enum UTF8PROC_CATEGORY_ND = utf8proc_category_t.UTF8PROC_CATEGORY_ND; 209 enum UTF8PROC_CATEGORY_NL = utf8proc_category_t.UTF8PROC_CATEGORY_NL; 210 enum UTF8PROC_CATEGORY_NO = utf8proc_category_t.UTF8PROC_CATEGORY_NO; 211 enum UTF8PROC_CATEGORY_PC = utf8proc_category_t.UTF8PROC_CATEGORY_PC; 212 enum UTF8PROC_CATEGORY_PD = utf8proc_category_t.UTF8PROC_CATEGORY_PD; 213 enum UTF8PROC_CATEGORY_PS = utf8proc_category_t.UTF8PROC_CATEGORY_PS; 214 enum UTF8PROC_CATEGORY_PE = utf8proc_category_t.UTF8PROC_CATEGORY_PE; 215 enum UTF8PROC_CATEGORY_PI = utf8proc_category_t.UTF8PROC_CATEGORY_PI; 216 enum UTF8PROC_CATEGORY_PF = utf8proc_category_t.UTF8PROC_CATEGORY_PF; 217 enum UTF8PROC_CATEGORY_PO = utf8proc_category_t.UTF8PROC_CATEGORY_PO; 218 enum UTF8PROC_CATEGORY_SM = utf8proc_category_t.UTF8PROC_CATEGORY_SM; 219 enum UTF8PROC_CATEGORY_SC = utf8proc_category_t.UTF8PROC_CATEGORY_SC; 220 enum UTF8PROC_CATEGORY_SK = utf8proc_category_t.UTF8PROC_CATEGORY_SK; 221 enum UTF8PROC_CATEGORY_SO = utf8proc_category_t.UTF8PROC_CATEGORY_SO; 222 enum UTF8PROC_CATEGORY_ZS = utf8proc_category_t.UTF8PROC_CATEGORY_ZS; 223 enum UTF8PROC_CATEGORY_ZL = utf8proc_category_t.UTF8PROC_CATEGORY_ZL; 224 enum UTF8PROC_CATEGORY_ZP = utf8proc_category_t.UTF8PROC_CATEGORY_ZP; 225 enum UTF8PROC_CATEGORY_CC = utf8proc_category_t.UTF8PROC_CATEGORY_CC; 226 enum UTF8PROC_CATEGORY_CF = utf8proc_category_t.UTF8PROC_CATEGORY_CF; 227 enum UTF8PROC_CATEGORY_CS = utf8proc_category_t.UTF8PROC_CATEGORY_CS; 228 enum UTF8PROC_CATEGORY_CO = utf8proc_category_t.UTF8PROC_CATEGORY_CO; 229 230 /** Bidirectional character classes. */ 231 enum utf8proc_bidi_class_t 232 { 233 UTF8PROC_BIDI_CLASS_L = 1, /**< Left-to-Right */ 234 UTF8PROC_BIDI_CLASS_LRE = 2, /**< Left-to-Right Embedding */ 235 UTF8PROC_BIDI_CLASS_LRO = 3, /**< Left-to-Right Override */ 236 UTF8PROC_BIDI_CLASS_R = 4, /**< Right-to-Left */ 237 UTF8PROC_BIDI_CLASS_AL = 5, /**< Right-to-Left Arabic */ 238 UTF8PROC_BIDI_CLASS_RLE = 6, /**< Right-to-Left Embedding */ 239 UTF8PROC_BIDI_CLASS_RLO = 7, /**< Right-to-Left Override */ 240 UTF8PROC_BIDI_CLASS_PDF = 8, /**< Pop Directional Format */ 241 UTF8PROC_BIDI_CLASS_EN = 9, /**< European Number */ 242 UTF8PROC_BIDI_CLASS_ES = 10, /**< European Separator */ 243 UTF8PROC_BIDI_CLASS_ET = 11, /**< European Number Terminator */ 244 UTF8PROC_BIDI_CLASS_AN = 12, /**< Arabic Number */ 245 UTF8PROC_BIDI_CLASS_CS = 13, /**< Common Number Separator */ 246 UTF8PROC_BIDI_CLASS_NSM = 14, /**< Nonspacing Mark */ 247 UTF8PROC_BIDI_CLASS_BN = 15, /**< Boundary Neutral */ 248 UTF8PROC_BIDI_CLASS_B = 16, /**< Paragraph Separator */ 249 UTF8PROC_BIDI_CLASS_S = 17, /**< Segment Separator */ 250 UTF8PROC_BIDI_CLASS_WS = 18, /**< Whitespace */ 251 UTF8PROC_BIDI_CLASS_ON = 19, /**< Other Neutrals */ 252 UTF8PROC_BIDI_CLASS_LRI = 20, /**< Left-to-Right Isolate */ 253 UTF8PROC_BIDI_CLASS_RLI = 21, /**< Right-to-Left Isolate */ 254 UTF8PROC_BIDI_CLASS_FSI = 22, /**< First Strong Isolate */ 255 UTF8PROC_BIDI_CLASS_PDI = 23, /**< Pop Directional Isolate */ 256 257 258 259 } 260 261 enum UTF8PROC_BIDI_CLASS_L = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_L; 262 enum UTF8PROC_BIDI_CLASS_LRE = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_LRE; 263 enum UTF8PROC_BIDI_CLASS_LRO = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_LRO; 264 enum UTF8PROC_BIDI_CLASS_R = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_R; 265 enum UTF8PROC_BIDI_CLASS_AL = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_AL; 266 enum UTF8PROC_BIDI_CLASS_RLE = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_RLE; 267 enum UTF8PROC_BIDI_CLASS_RLO = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_RLO; 268 enum UTF8PROC_BIDI_CLASS_PDF = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_PDF; 269 enum UTF8PROC_BIDI_CLASS_EN = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_EN; 270 enum UTF8PROC_BIDI_CLASS_ES = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_ES; 271 enum UTF8PROC_BIDI_CLASS_ET = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_ET; 272 enum UTF8PROC_BIDI_CLASS_AN = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_AN; 273 enum UTF8PROC_BIDI_CLASS_CS = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_CS; 274 enum UTF8PROC_BIDI_CLASS_NSM = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_NSM; 275 enum UTF8PROC_BIDI_CLASS_BN = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_BN; 276 enum UTF8PROC_BIDI_CLASS_B = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_B; 277 enum UTF8PROC_BIDI_CLASS_S = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_S; 278 enum UTF8PROC_BIDI_CLASS_WS = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_WS; 279 enum UTF8PROC_BIDI_CLASS_ON = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_ON; 280 enum UTF8PROC_BIDI_CLASS_LRI = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_LRI; 281 enum UTF8PROC_BIDI_CLASS_RLI = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_RLI; 282 enum UTF8PROC_BIDI_CLASS_FSI = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_FSI; 283 enum UTF8PROC_BIDI_CLASS_PDI = utf8proc_bidi_class_t.UTF8PROC_BIDI_CLASS_PDI; 284 285 /** Decomposition type. */ 286 enum utf8proc_decomp_type_t 287 { 288 UTF8PROC_DECOMP_TYPE_FONT = 1, /**< Font */ 289 UTF8PROC_DECOMP_TYPE_NOBREAK = 2, /**< Nobreak */ 290 UTF8PROC_DECOMP_TYPE_INITIAL = 3, /**< Initial */ 291 UTF8PROC_DECOMP_TYPE_MEDIAL = 4, /**< Medial */ 292 UTF8PROC_DECOMP_TYPE_FINAL = 5, /**< Final */ 293 UTF8PROC_DECOMP_TYPE_ISOLATED = 6, /**< Isolated */ 294 UTF8PROC_DECOMP_TYPE_CIRCLE = 7, /**< Circle */ 295 UTF8PROC_DECOMP_TYPE_SUPER = 8, /**< Super */ 296 UTF8PROC_DECOMP_TYPE_SUB = 9, /**< Sub */ 297 UTF8PROC_DECOMP_TYPE_VERTICAL = 10, /**< Vertical */ 298 UTF8PROC_DECOMP_TYPE_WIDE = 11, /**< Wide */ 299 UTF8PROC_DECOMP_TYPE_NARROW = 12, /**< Narrow */ 300 UTF8PROC_DECOMP_TYPE_SMALL = 13, /**< Small */ 301 UTF8PROC_DECOMP_TYPE_SQUARE = 14, /**< Square */ 302 UTF8PROC_DECOMP_TYPE_FRACTION = 15, /**< Fraction */ 303 UTF8PROC_DECOMP_TYPE_COMPAT = 16, /**< Compat */ 304 305 306 307 } 308 309 enum UTF8PROC_DECOMP_TYPE_FONT = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_FONT; 310 enum UTF8PROC_DECOMP_TYPE_NOBREAK = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_NOBREAK; 311 enum UTF8PROC_DECOMP_TYPE_INITIAL = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_INITIAL; 312 enum UTF8PROC_DECOMP_TYPE_MEDIAL = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_MEDIAL; 313 enum UTF8PROC_DECOMP_TYPE_FINAL = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_FINAL; 314 enum UTF8PROC_DECOMP_TYPE_ISOLATED = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_ISOLATED; 315 enum UTF8PROC_DECOMP_TYPE_CIRCLE = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_CIRCLE; 316 enum UTF8PROC_DECOMP_TYPE_SUPER = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_SUPER; 317 enum UTF8PROC_DECOMP_TYPE_SUB = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_SUB; 318 enum UTF8PROC_DECOMP_TYPE_VERTICAL = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_VERTICAL; 319 enum UTF8PROC_DECOMP_TYPE_WIDE = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_WIDE; 320 enum UTF8PROC_DECOMP_TYPE_NARROW = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_NARROW; 321 enum UTF8PROC_DECOMP_TYPE_SMALL = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_SMALL; 322 enum UTF8PROC_DECOMP_TYPE_SQUARE = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_SQUARE; 323 enum UTF8PROC_DECOMP_TYPE_FRACTION = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_FRACTION; 324 enum UTF8PROC_DECOMP_TYPE_COMPAT = utf8proc_decomp_type_t.UTF8PROC_DECOMP_TYPE_COMPAT; 325 326 /** Boundclass property. (TR29) */ 327 enum utf8proc_boundclass_t 328 { 329 UTF8PROC_BOUNDCLASS_START = 0, /**< Start */ 330 UTF8PROC_BOUNDCLASS_OTHER = 1, /**< Other */ 331 UTF8PROC_BOUNDCLASS_CR = 2, /**< Cr */ 332 UTF8PROC_BOUNDCLASS_LF = 3, /**< Lf */ 333 UTF8PROC_BOUNDCLASS_CONTROL = 4, /**< Control */ 334 UTF8PROC_BOUNDCLASS_EXTEND = 5, /**< Extend */ 335 UTF8PROC_BOUNDCLASS_L = 6, /**< L */ 336 UTF8PROC_BOUNDCLASS_V = 7, /**< V */ 337 UTF8PROC_BOUNDCLASS_T = 8, /**< T */ 338 UTF8PROC_BOUNDCLASS_LV = 9, /**< Lv */ 339 UTF8PROC_BOUNDCLASS_LVT = 10, /**< Lvt */ 340 UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR = 11, /**< Regional indicator */ 341 UTF8PROC_BOUNDCLASS_SPACINGMARK = 12, /**< Spacingmark */ 342 UTF8PROC_BOUNDCLASS_PREPEND = 13, /**< Prepend */ 343 UTF8PROC_BOUNDCLASS_ZWJ = 14, /**< Zero Width Joiner */ 344 UTF8PROC_BOUNDCLASS_E_BASE = 15, /**< Emoji Base */ 345 UTF8PROC_BOUNDCLASS_E_MODIFIER = 16, /**< Emoji Modifier */ 346 UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ = 17, /**< Glue_After_ZWJ */ 347 UTF8PROC_BOUNDCLASS_E_BASE_GAZ = 18, /**< E_BASE + GLUE_AFTER_ZJW */ 348 349 350 351 } 352 353 enum UTF8PROC_BOUNDCLASS_START = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_START; 354 enum UTF8PROC_BOUNDCLASS_OTHER = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_OTHER; 355 enum UTF8PROC_BOUNDCLASS_CR = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_CR; 356 enum UTF8PROC_BOUNDCLASS_LF = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_LF; 357 enum UTF8PROC_BOUNDCLASS_CONTROL = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_CONTROL; 358 enum UTF8PROC_BOUNDCLASS_EXTEND = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_EXTEND; 359 enum UTF8PROC_BOUNDCLASS_L = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_L; 360 enum UTF8PROC_BOUNDCLASS_V = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_V; 361 enum UTF8PROC_BOUNDCLASS_T = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_T; 362 enum UTF8PROC_BOUNDCLASS_LV = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_LV; 363 enum UTF8PROC_BOUNDCLASS_LVT = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_LVT; 364 enum UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR = utf8proc_boundclass_t 365 .UTF8PROC_BOUNDCLASS_REGIONAL_INDICATOR; 366 enum UTF8PROC_BOUNDCLASS_SPACINGMARK = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_SPACINGMARK; 367 enum UTF8PROC_BOUNDCLASS_PREPEND = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_PREPEND; 368 enum UTF8PROC_BOUNDCLASS_ZWJ = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_ZWJ; 369 enum UTF8PROC_BOUNDCLASS_E_BASE = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_E_BASE; 370 enum UTF8PROC_BOUNDCLASS_E_MODIFIER = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_E_MODIFIER; 371 enum UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_GLUE_AFTER_ZWJ; 372 enum UTF8PROC_BOUNDCLASS_E_BASE_GAZ = utf8proc_boundclass_t.UTF8PROC_BOUNDCLASS_E_BASE_GAZ; 373 374 /** 375 * Function pointer type passed to @ref utf8proc_map_custom and 376 * @ref utf8proc_decompose_custom, which is used to specify a user-defined 377 * mapping of codepoints to be applied in conjunction with other mappings. 378 */ 379 alias utf8proc_custom_func = utf8proc_int32_t function(utf8proc_int32_t codepoint, void* data);