1 #![allow(clippy::identity_op)] 2 3 use std::os::raw::{c_int, c_uint}; 4 use super::{OnigCaseFoldType, OnigCtype, OnigDistance, OnigOptionType, OnigSyntaxBehavior, 5 OnigSyntaxOp, OnigSyntaxOp2}; 6 7 macro_rules! define_consts { 8 ($typ:ty, $( $name:ident = $value:expr );* ) => { 9 $(pub const $name: $typ = $value;)* 10 }; 11 } 12 13 // Character types 14 define_consts!(OnigCtype, 15 ONIGENC_CTYPE_NEWLINE = 0; 16 ONIGENC_CTYPE_ALPHA = 1; 17 ONIGENC_CTYPE_BLANK = 2; 18 ONIGENC_CTYPE_CNTRL = 3; 19 ONIGENC_CTYPE_DIGIT = 4; 20 ONIGENC_CTYPE_GRAPH = 5; 21 ONIGENC_CTYPE_LOWER = 6; 22 ONIGENC_CTYPE_PRINT = 7; 23 ONIGENC_CTYPE_PUNCT = 8; 24 ONIGENC_CTYPE_SPACE = 9; 25 ONIGENC_CTYPE_UPPER = 10; 26 ONIGENC_CTYPE_XDIGIT = 11; 27 ONIGENC_CTYPE_WORD = 12; 28 ONIGENC_CTYPE_ALNUM = 13; /* alpha || digit */ 29 ONIGENC_CTYPE_ASCII = 14; 30 ONIGENC_MAX_STD_CTYPE = ONIGENC_CTYPE_ASCII 31 ); 32 33 // Options 34 define_consts!(OnigOptionType, 35 // Compile time 36 ONIG_OPTION_DEFAULT = ONIG_OPTION_NONE; 37 ONIG_OPTION_NONE = 0; 38 ONIG_OPTION_IGNORECASE = 1; 39 ONIG_OPTION_EXTEND = ONIG_OPTION_IGNORECASE << 1; 40 ONIG_OPTION_MULTILINE = ONIG_OPTION_EXTEND << 1; 41 ONIG_OPTION_SINGLELINE = ONIG_OPTION_MULTILINE << 1; 42 ONIG_OPTION_FIND_LONGEST = ONIG_OPTION_SINGLELINE << 1; 43 ONIG_OPTION_FIND_NOT_EMPTY = ONIG_OPTION_FIND_LONGEST << 1; 44 ONIG_OPTION_NEGATE_SINGLELINE = ONIG_OPTION_FIND_NOT_EMPTY << 1; 45 ONIG_OPTION_DONT_CAPTURE_GROUP = ONIG_OPTION_NEGATE_SINGLELINE << 1; 46 ONIG_OPTION_CAPTURE_GROUP = ONIG_OPTION_DONT_CAPTURE_GROUP << 1; 47 // Search time 48 ONIG_OPTION_NOTBOL = ONIG_OPTION_CAPTURE_GROUP << 1; 49 ONIG_OPTION_NOTEOL = ONIG_OPTION_NOTBOL << 1; 50 ONIG_OPTION_POSIX_REGION = ONIG_OPTION_NOTEOL << 1; 51 ONIG_OPTION_MAXBIT = ONIG_OPTION_POSIX_REGION /* limit */ 52 ); 53 54 // Syntax operators 55 define_consts!(OnigSyntaxOp, 56 ONIG_SYN_OP_VARIABLE_META_CHARACTERS = 1 << 0; 57 ONIG_SYN_OP_DOT_ANYCHAR = 1 << 1; /* . */ 58 ONIG_SYN_OP_ASTERISK_ZERO_INF = 1 << 2; /* * */ 59 ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF = 1 << 3; 60 ONIG_SYN_OP_PLUS_ONE_INF = 1 << 4; /* + */ 61 ONIG_SYN_OP_ESC_PLUS_ONE_INF = 1 << 5; 62 ONIG_SYN_OP_QMARK_ZERO_ONE = 1 << 6; /* ? */ 63 ONIG_SYN_OP_ESC_QMARK_ZERO_ONE = 1 << 7; 64 ONIG_SYN_OP_BRACE_INTERVAL = 1 << 8; /* {lower,upper} */ 65 ONIG_SYN_OP_ESC_BRACE_INTERVAL = 1 << 9; /* \{lower,upper\} */ 66 ONIG_SYN_OP_VBAR_ALT = 1 << 10; /* | */ 67 ONIG_SYN_OP_ESC_VBAR_ALT = 1 << 11; /* \| */ 68 ONIG_SYN_OP_LPAREN_SUBEXP = 1 << 12; /* (...) */ 69 ONIG_SYN_OP_ESC_LPAREN_SUBEXP = 1 << 13; /* \(...\) */ 70 ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR = 1 << 14; /* \A, \Z, \z */ 71 ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR = 1 << 15; /* \G */ 72 ONIG_SYN_OP_DECIMAL_BACKREF = 1 << 16; /* \num */ 73 ONIG_SYN_OP_BRACKET_CC = 1 << 17; /* [...] */ 74 ONIG_SYN_OP_ESC_W_WORD = 1 << 18; /* \w, \W */ 75 ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END = 1 << 19; /* \<. \> */ 76 ONIG_SYN_OP_ESC_B_WORD_BOUND = 1 << 20; /* \b, \B */ 77 ONIG_SYN_OP_ESC_S_WHITE_SPACE = 1 << 21; /* \s, \S */ 78 ONIG_SYN_OP_ESC_D_DIGIT = 1 << 22; /* \d, \D */ 79 ONIG_SYN_OP_LINE_ANCHOR = 1 << 23; /* ^, $ */ 80 ONIG_SYN_OP_POSIX_BRACKET = 1 << 24; /* [:xxxx:] */ 81 ONIG_SYN_OP_QMARK_NON_GREEDY = 1 << 25; /* ??,*?,+?,{n,m}? */ 82 ONIG_SYN_OP_ESC_CONTROL_CHARS = 1 << 26; /* \n,\r,\t,\a ... */ 83 ONIG_SYN_OP_ESC_C_CONTROL = 1 << 27; /* \cx */ 84 ONIG_SYN_OP_ESC_OCTAL3 = 1 << 28; /* \OOO */ 85 ONIG_SYN_OP_ESC_X_HEX2 = 1 << 29; /* \xHH */ 86 ONIG_SYN_OP_ESC_X_BRACE_HEX8 = 1 << 30 /* \x{7HHHHHHH} */ 87 ); 88 89 // Syntax operators 2 90 define_consts!(OnigSyntaxOp2, 91 ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE = 1 << 0; /* \Q...\E */ 92 ONIG_SYN_OP2_QMARK_GROUP_EFFECT = 1 << 1; /* (?...) */ 93 ONIG_SYN_OP2_OPTION_PERL = 1 << 2; /* (?imsx),(?-imsx) */ 94 ONIG_SYN_OP2_OPTION_RUBY = 1 << 3; /* (?imx), (?-imx) */ 95 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT = 1 << 4; /* ?+,*+,++ */ 96 ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL = 1 << 5; /* {n,m}+ */ 97 ONIG_SYN_OP2_CCLASS_SET_OP = 1 << 6; /* [...&&..[..]..] */ 98 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP = 1 << 7; /* (?<name>...) */ 99 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF = 1 << 8; /* \k<name> */ 100 ONIG_SYN_OP2_ESC_G_SUBEXP_CALL = 1 << 9; /* \g<name>, \g<n> */ 101 ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY = 1 << 10; /* (?@..),(?@<x>..) */ 102 ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL = 1 << 11; /* \C-x */ 103 ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META = 1 << 12; /* \M-x */ 104 ONIG_SYN_OP2_ESC_V_VTAB = 1 << 13; /* \v as VTAB */ 105 ONIG_SYN_OP2_ESC_U_HEX4 = 1 << 14; /* \uHHHH */ 106 ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR = 1 << 15; /* \`, \' */ 107 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY = 1 << 16; /* \p{...}, \P{...} */ 108 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT = 1 << 17; /* \p{^..}, \P{^..} */ 109 ONIG_SYN_OP2_ESC_H_XDIGIT = 1 << 19; /* \h, \H */ 110 ONIG_SYN_OP2_INEFFECTIVE_ESCAPE = 1 << 20 /* \ */ 111 ); 112 113 // Syntax behavior 114 define_consts!(OnigSyntaxBehavior, 115 ONIG_SYN_CONTEXT_INDEP_ANCHORS = 1 << 31; /* not implemented */ 116 ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS = 1 << 0; /* ?, *, +, {n,m} */ 117 ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS = 1 << 1; /* error or ignore */ 118 ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP = 1 << 2; /* ...)... */ 119 ONIG_SYN_ALLOW_INVALID_INTERVAL = 1 << 3; /* {??? */ 120 ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV = 1 << 4; /* {,n} => {0,n} */ 121 ONIG_SYN_STRICT_CHECK_BACKREF = 1 << 5; /* /(\1)/,/\1()/ ..*/ 122 ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND = 1 << 6; /* (?<=a|bc) */ 123 ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP = 1 << 7; /* see doc/RE */ 124 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME = 1 << 8; /* (?<x>)(?<x>) */ 125 ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY = 1 << 9; /* a{n}?=(?:a{n})? */ 126 ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC = 1 << 20; /* [^...] */ 127 ONIG_SYN_BACKSLASH_ESCAPE_IN_CC = 1 << 21; /* [..\w..] etc.. */ 128 ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC = 1 << 22; 129 ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC = 1 << 23; /* [0-9-a]=[0-9\-a] */ 130 ONIG_SYN_WARN_CC_OP_NOT_ESCAPED = 1 << 24; /* [,-,] */ 131 ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT = 1 << 25 /* (?:a*)+ */ 132 ); 133 134 // Returns 135 define_consts!(c_int, 136 ONIG_NORMAL = 0; 137 ONIG_MISMATCH = -1; 138 ONIG_NO_SUPPORT_CONFIG = -2; 139 ONIGERR_MEMORY = -5; 140 ONIGERR_TYPE_BUG = -6; 141 ONIGERR_PARSER_BUG = -11; 142 ONIGERR_STACK_BUG = -12; 143 ONIGERR_UNDEFINED_BYTECODE = -13; 144 ONIGERR_UNEXPECTED_BYTECODE = -14; 145 ONIGERR_MATCH_STACK_LIMIT_OVER = -15; 146 ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED = -21; 147 ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR = -22; 148 ONIGERR_INVALID_ARGUMENT = -30; 149 ONIGERR_END_PATTERN_AT_LEFT_BRACE = -100; 150 ONIGERR_END_PATTERN_AT_LEFT_BRACKET = -101; 151 ONIGERR_EMPTY_CHAR_CLASS = -102; 152 ONIGERR_PREMATURE_END_OF_CHAR_CLASS = -103; 153 ONIGERR_END_PATTERN_AT_ESCAPE = -104; 154 ONIGERR_END_PATTERN_AT_META = -105; 155 ONIGERR_END_PATTERN_AT_CONTROL = -106; 156 ONIGERR_META_CODE_SYNTAX = -108; 157 ONIGERR_CONTROL_CODE_SYNTAX = -109; 158 ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE = -110; 159 ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE = -111; 160 ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS = -112; 161 ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED = -113; 162 ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID = -114; 163 ONIGERR_NESTED_REPEAT_OPERATOR = -115; 164 ONIGERR_UNMATCHED_CLOSE_PARENTHESIS = -116; 165 ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS = -117; 166 ONIGERR_END_PATTERN_IN_GROUP = -118; 167 ONIGERR_UNDEFINED_GROUP_OPTION = -119; 168 ONIGERR_INVALID_POSIX_BRACKET_TYPE = -121; 169 ONIGERR_INVALID_LOOK_BEHIND_PATTERN = -122; 170 ONIGERR_INVALID_REPEAT_RANGE_PATTERN = -123; 171 ONIGERR_TOO_BIG_NUMBER = -200; 172 ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE = -201; 173 ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE = -202; 174 ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS = -203; 175 ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE = -204; 176 ONIGERR_TOO_MANY_MULTI_BYTE_RANGES = -205; 177 ONIGERR_TOO_SHORT_MULTI_BYTE_STRING = -206; 178 ONIGERR_TOO_BIG_BACKREF_NUMBER = -207; 179 ONIGERR_INVALID_BACKREF = -208; 180 ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED = -209; 181 ONIGERR_TOO_LONG_WIDE_CHAR_VALUE = -212; 182 ONIGERR_EMPTY_GROUP_NAME = -214; 183 ONIGERR_INVALID_GROUP_NAME = -215; 184 ONIGERR_INVALID_CHAR_IN_GROUP_NAME = -216; 185 ONIGERR_UNDEFINED_NAME_REFERENCE = -217; 186 ONIGERR_UNDEFINED_GROUP_REFERENCE = -218; 187 ONIGERR_MULTIPLEX_DEFINED_NAME = -219; 188 ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL = -220; 189 ONIGERR_NEVER_ENDING_RECURSION = -221; 190 ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY = -222; 191 ONIGERR_INVALID_CHAR_PROPERTY_NAME = -223; 192 ONIGERR_INVALID_CODE_POINT_VALUE = -400; 193 ONIGERR_INVALID_WIDE_CHAR_VALUE = -400; 194 ONIGERR_TOO_BIG_WIDE_CHAR_VALUE = -401; 195 ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION = -402; 196 ONIGERR_INVALID_COMBINATION_OF_OPTIONS = -403; 197 ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT = -1001 198 ); 199 200 // OnigRegexType->state 201 define_consts!(c_int, 202 ONIG_STATE_NORMAL = 0; 203 ONIG_STATE_SEARCHING = 1; 204 ONIG_STATE_COMPILING = -1; 205 ONIG_STATE_MODIFY = -2 206 ); 207 208 // Capture tree traverse callback returns 209 define_consts!(c_int, 210 ONIG_TRAVERSE_CALLBACK_AT_FIRST = 1; 211 ONIG_TRAVERSE_CALLBACK_AT_LAST = 2; 212 ONIG_TRAVERSE_CALLBACK_AT_BOTH = 1 | 2 213 ); 214 215 // Meta character specifiers, see onig_set_meta_char() 216 define_consts!(c_uint, 217 ONIG_META_CHAR_ESCAPE = 0; 218 ONIG_META_CHAR_ANYCHAR = 1; 219 ONIG_META_CHAR_ANYTIME = 2; 220 ONIG_META_CHAR_ZERO_OR_ONE_TIME = 3; 221 ONIG_META_CHAR_ONE_OR_MORE_TIME = 4; 222 ONIG_META_CHAR_ANYCHAR_ANYTIME = 5; 223 ONIG_INEFFECTIVE_META_CHAR = 0 224 ); 225 226 // Infinite distance 227 define_consts!(OnigDistance, ONIG_INFINITE_DISTANCE = !0); 228 229 // Case fold flags 230 define_consts!(OnigCaseFoldType, 231 ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN = 3; 232 ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM = 13; 233 ONIGENC_CASE_FOLD_TURKISH_AZERI = 1 << 20; 234 ONIGENC_CASE_FOLD_MIN = 1 << 30; 235 INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR = 1 << 30 236 ); 237 238 // Work size, config parameters and constants 239 define_consts!(c_int, 240 ONIGENC_CODE_TO_MBC_MAXLEN = 7; 241 ONIGENC_MBC_CASE_FOLD_MAXLEN = 18; 242 ONIG_NREGION = 10; 243 ONIG_MAX_BACKREF_NUM = 1000; 244 ONIG_MAX_REPEAT_NUM = 100_000; 245 ONIG_MAX_MULTI_BYTE_RANGES_NUM = 10_000; 246 ONIG_MAX_ERROR_MESSAGE_LEN = 90; 247 ONIG_MAX_CAPTURE_HISTORY_GROUP = 31; 248 ONIG_REGION_NOTPOS = -1; 249 ONIG_CHAR_TABLE_SIZE = 256 250 ); 251