File indexing completed on 2024-05-18 08:30:09
0001 #ifndef ONIGURUMA_H
0002 #define ONIGURUMA_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #ifdef __cplusplus
0033 extern "C" {
0034 #endif
0035
0036 #define ONIGURUMA
0037 #define ONIGURUMA_VERSION_MAJOR 6
0038 #define ONIGURUMA_VERSION_MINOR 9
0039 #define ONIGURUMA_VERSION_TEENY 8
0040
0041 #define ONIGURUMA_VERSION_INT 60908
0042
0043 #ifndef P_
0044 #if defined(__STDC__) || defined(_WIN32)
0045 # define P_(args) args
0046 #else
0047 # define P_(args) ()
0048 #endif
0049 #endif
0050
0051 #ifndef PV_
0052 # define PV_(args) args
0053 #endif
0054
0055 #ifndef ONIG_STATIC
0056 #ifndef ONIG_EXTERN
0057 #if defined(_WIN32) && !defined(__GNUC__)
0058 #if defined(ONIGURUMA_EXPORT)
0059 #define ONIG_EXTERN extern __declspec(dllexport)
0060 #else
0061 #define ONIG_EXTERN extern __declspec(dllimport)
0062 #endif
0063 #endif
0064 #endif
0065
0066 #ifndef ONIG_EXTERN
0067 #define ONIG_EXTERN extern
0068 #endif
0069 #else
0070 #define ONIG_EXTERN extern
0071 #endif
0072
0073 #ifndef ONIG_VARIADIC_FUNC_ATTR
0074 #define ONIG_VARIADIC_FUNC_ATTR
0075 #endif
0076
0077
0078
0079 #ifndef ONIG_ESCAPE_UCHAR_COLLISION
0080 #define UChar OnigUChar
0081 #endif
0082
0083 typedef unsigned int OnigCodePoint;
0084 typedef unsigned char OnigUChar;
0085 typedef unsigned int OnigCtype;
0086 typedef unsigned int OnigLen;
0087
0088 #define ONIG_INFINITE_DISTANCE ~((OnigLen )0)
0089
0090 typedef unsigned int OnigCaseFoldType;
0091
0092 ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag;
0093
0094 #define ONIGENC_CASE_FOLD_ASCII_ONLY (1)
0095
0096
0097 #define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20)
0098 #define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30)
0099
0100 #define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR
0101 #define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag
0102
0103
0104 #define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3
0105 #define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13
0106
0107
0108
0109 #define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0])
0110 #define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1]
0111 #define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2]
0112
0113 typedef struct {
0114 int byte_len;
0115 int code_len;
0116 OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN];
0117 } OnigCaseFoldCodeItem;
0118
0119 typedef struct {
0120 OnigCodePoint esc;
0121 OnigCodePoint anychar;
0122 OnigCodePoint anytime;
0123 OnigCodePoint zero_or_one_time;
0124 OnigCodePoint one_or_more_time;
0125 OnigCodePoint anychar_anytime;
0126 } OnigMetaCharTableType;
0127
0128 typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
0129
0130 typedef struct OnigEncodingTypeST {
0131 int (*mbc_enc_len)(const OnigUChar* p);
0132 const char* name;
0133 int max_enc_len;
0134 int min_enc_len;
0135 int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end);
0136 OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end);
0137 int (*code_to_mbclen)(OnigCodePoint code);
0138 int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf);
0139 int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to);
0140 int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
0141 int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]);
0142 int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
0143 int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype);
0144 int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]);
0145 OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p);
0146 int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end);
0147 int (*init)(void);
0148 int (*is_initialized)(void);
0149 int (*is_valid_mbc_string)(const OnigUChar* s, const OnigUChar* end);
0150 unsigned int flag;
0151 OnigCodePoint sb_range;
0152 int index;
0153 } OnigEncodingType;
0154
0155 typedef OnigEncodingType* OnigEncoding;
0156
0157 ONIG_EXTERN OnigEncodingType OnigEncodingASCII;
0158 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1;
0159 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2;
0160 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3;
0161 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4;
0162 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5;
0163 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6;
0164 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7;
0165 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8;
0166 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9;
0167 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10;
0168 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11;
0169 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13;
0170 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14;
0171 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15;
0172 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16;
0173 ONIG_EXTERN OnigEncodingType OnigEncodingUTF8;
0174 ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE;
0175 ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE;
0176 ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE;
0177 ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE;
0178 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP;
0179 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW;
0180 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR;
0181 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN;
0182 ONIG_EXTERN OnigEncodingType OnigEncodingSJIS;
0183 ONIG_EXTERN OnigEncodingType OnigEncodingKOI8;
0184 ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R;
0185 ONIG_EXTERN OnigEncodingType OnigEncodingCP1251;
0186 ONIG_EXTERN OnigEncodingType OnigEncodingBIG5;
0187 ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;
0188
0189 #define ONIG_ENCODING_ASCII (&OnigEncodingASCII)
0190 #define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1)
0191 #define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2)
0192 #define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3)
0193 #define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4)
0194 #define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5)
0195 #define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6)
0196 #define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7)
0197 #define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8)
0198 #define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9)
0199 #define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10)
0200 #define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11)
0201 #define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13)
0202 #define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14)
0203 #define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15)
0204 #define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16)
0205 #define ONIG_ENCODING_UTF8 (&OnigEncodingUTF8)
0206 #define ONIG_ENCODING_UTF16_BE (&OnigEncodingUTF16_BE)
0207 #define ONIG_ENCODING_UTF16_LE (&OnigEncodingUTF16_LE)
0208 #define ONIG_ENCODING_UTF32_BE (&OnigEncodingUTF32_BE)
0209 #define ONIG_ENCODING_UTF32_LE (&OnigEncodingUTF32_LE)
0210 #define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP)
0211 #define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW)
0212 #define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR)
0213 #define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN)
0214 #define ONIG_ENCODING_SJIS (&OnigEncodingSJIS)
0215 #define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8)
0216 #define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R)
0217 #define ONIG_ENCODING_CP1251 (&OnigEncodingCP1251)
0218 #define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5)
0219 #define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030)
0220
0221 #define ONIG_ENCODING_UNDEF ((OnigEncoding )0)
0222
0223
0224
0225 #define ONIGENC_CODE_TO_MBC_MAXLEN 7
0226 #define ONIGENC_MBC_CASE_FOLD_MAXLEN 18
0227
0228
0229
0230 typedef enum {
0231 ONIGENC_CTYPE_NEWLINE = 0,
0232 ONIGENC_CTYPE_ALPHA = 1,
0233 ONIGENC_CTYPE_BLANK = 2,
0234 ONIGENC_CTYPE_CNTRL = 3,
0235 ONIGENC_CTYPE_DIGIT = 4,
0236 ONIGENC_CTYPE_GRAPH = 5,
0237 ONIGENC_CTYPE_LOWER = 6,
0238 ONIGENC_CTYPE_PRINT = 7,
0239 ONIGENC_CTYPE_PUNCT = 8,
0240 ONIGENC_CTYPE_SPACE = 9,
0241 ONIGENC_CTYPE_UPPER = 10,
0242 ONIGENC_CTYPE_XDIGIT = 11,
0243 ONIGENC_CTYPE_WORD = 12,
0244 ONIGENC_CTYPE_ALNUM = 13,
0245 ONIGENC_CTYPE_ASCII = 14
0246 } OnigEncCtype;
0247
0248 #define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII
0249
0250
0251 #define onig_enc_len(enc,p,end) ONIGENC_MBC_ENC_LEN(enc,p)
0252
0253 #define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF)
0254 #define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1)
0255 #define ONIGENC_IS_MBC_HEAD(enc,p) (ONIGENC_MBC_ENC_LEN(enc,p) != 1)
0256 #define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128)
0257 #define ONIGENC_IS_CODE_ASCII(code) ((code) < 128)
0258 #define ONIGENC_IS_MBC_WORD(enc,s,end) \
0259 ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))
0260 #define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end)
0261
0262 #define ONIGENC_NAME(enc) ((enc)->name)
0263
0264 #define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \
0265 (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf)
0266 #define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \
0267 (enc)->is_allowed_reverse_match(s,end)
0268 #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \
0269 (enc)->left_adjust_char_head(start, s)
0270 #define ONIGENC_IS_VALID_MBC_STRING(enc,s,end) \
0271 (enc)->is_valid_mbc_string(s,end)
0272 #define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \
0273 (enc)->apply_all_case_fold(case_fold_flag,f,arg)
0274 #define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \
0275 (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs)
0276 #define ONIGENC_STEP_BACK(enc,start,s,n) \
0277 onigenc_step_back((enc),(start),(s),(n))
0278
0279 #define ONIGENC_MBC_ENC_LEN(enc,p) (enc)->mbc_enc_len(p)
0280 #define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len)
0281 #define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc)
0282 #define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len)
0283 #define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end))
0284 #define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end))
0285 #define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code)
0286 #define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf)
0287 #define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \
0288 (enc)->property_name_to_ctype(enc,p,end)
0289
0290 #define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype)
0291
0292 #define ONIGENC_IS_CODE_NEWLINE(enc,code) \
0293 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE)
0294 #define ONIGENC_IS_CODE_GRAPH(enc,code) \
0295 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH)
0296 #define ONIGENC_IS_CODE_PRINT(enc,code) \
0297 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT)
0298 #define ONIGENC_IS_CODE_ALNUM(enc,code) \
0299 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM)
0300 #define ONIGENC_IS_CODE_ALPHA(enc,code) \
0301 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA)
0302 #define ONIGENC_IS_CODE_LOWER(enc,code) \
0303 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER)
0304 #define ONIGENC_IS_CODE_UPPER(enc,code) \
0305 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER)
0306 #define ONIGENC_IS_CODE_CNTRL(enc,code) \
0307 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL)
0308 #define ONIGENC_IS_CODE_PUNCT(enc,code) \
0309 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT)
0310 #define ONIGENC_IS_CODE_SPACE(enc,code) \
0311 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE)
0312 #define ONIGENC_IS_CODE_BLANK(enc,code) \
0313 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK)
0314 #define ONIGENC_IS_CODE_DIGIT(enc,code) \
0315 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT)
0316 #define ONIGENC_IS_CODE_XDIGIT(enc,code) \
0317 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT)
0318 #define ONIGENC_IS_CODE_WORD(enc,code) \
0319 ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD)
0320
0321 #define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \
0322 (enc)->get_ctype_code_range(ctype,sbout,ranges)
0323
0324 ONIG_EXTERN
0325 OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n));
0326
0327
0328
0329 ONIG_EXTERN
0330 int onigenc_init P_((void));
0331 ONIG_EXTERN
0332 int onig_initialize_encoding P_((OnigEncoding enc));
0333 ONIG_EXTERN
0334 int onigenc_set_default_encoding P_((OnigEncoding enc));
0335 ONIG_EXTERN
0336 OnigEncoding onigenc_get_default_encoding P_((void));
0337 ONIG_EXTERN
0338 void onigenc_set_default_caseconv_table P_((const OnigUChar* table));
0339 ONIG_EXTERN
0340 OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev));
0341 ONIG_EXTERN
0342 OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));
0343 ONIG_EXTERN
0344 OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));
0345 ONIG_EXTERN
0346 OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));
0347 ONIG_EXTERN
0348 int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end));
0349 ONIG_EXTERN
0350 int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p));
0351 ONIG_EXTERN
0352 int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p));
0353 ONIG_EXTERN
0354 int onigenc_is_valid_mbc_string P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end));
0355 ONIG_EXTERN
0356 OnigUChar* onigenc_strdup P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end));
0357
0358
0359
0360
0361
0362 #define ONIG_NREGION 10
0363 #define ONIG_MAX_CAPTURE_NUM 2147483647
0364 #define ONIG_MAX_BACKREF_NUM 1000
0365 #define ONIG_MAX_REPEAT_NUM 100000
0366 #define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000
0367
0368 #define ONIG_MAX_ERROR_MESSAGE_LEN 90
0369
0370 typedef unsigned int OnigOptionType;
0371
0372 #define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE
0373
0374
0375 #define ONIG_OPTION_NONE 0U
0376
0377 #define ONIG_OPTION_IGNORECASE 1U
0378 #define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
0379 #define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
0380 #define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1)
0381 #define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1)
0382 #define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1)
0383 #define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1)
0384 #define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1)
0385 #define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
0386
0387 #define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
0388 #define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
0389 #define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1)
0390 #define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1)
0391
0392 #define ONIG_OPTION_IGNORECASE_IS_ASCII (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 3)
0393 #define ONIG_OPTION_WORD_IS_ASCII (ONIG_OPTION_IGNORECASE_IS_ASCII << 1)
0394 #define ONIG_OPTION_DIGIT_IS_ASCII (ONIG_OPTION_WORD_IS_ASCII << 1)
0395 #define ONIG_OPTION_SPACE_IS_ASCII (ONIG_OPTION_DIGIT_IS_ASCII << 1)
0396 #define ONIG_OPTION_POSIX_IS_ASCII (ONIG_OPTION_SPACE_IS_ASCII << 1)
0397 #define ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER (ONIG_OPTION_POSIX_IS_ASCII << 1)
0398 #define ONIG_OPTION_TEXT_SEGMENT_WORD (ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER << 1)
0399
0400 #define ONIG_OPTION_NOT_BEGIN_STRING (ONIG_OPTION_TEXT_SEGMENT_WORD << 1)
0401 #define ONIG_OPTION_NOT_END_STRING (ONIG_OPTION_NOT_BEGIN_STRING << 1)
0402 #define ONIG_OPTION_NOT_BEGIN_POSITION (ONIG_OPTION_NOT_END_STRING << 1)
0403 #define ONIG_OPTION_CALLBACK_EACH_MATCH (ONIG_OPTION_NOT_BEGIN_POSITION << 1)
0404
0405 #define ONIG_OPTION_MAXBIT ONIG_OPTION_CALLBACK_EACH_MATCH
0406
0407 #define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
0408 #define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
0409 #define ONIG_IS_OPTION_ON(options,option) ((options) & (option))
0410
0411
0412 typedef struct {
0413 unsigned int op;
0414 unsigned int op2;
0415 unsigned int behavior;
0416 OnigOptionType options;
0417 OnigMetaCharTableType meta_char_table;
0418 } OnigSyntaxType;
0419
0420 ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS;
0421 ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic;
0422 ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended;
0423 ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs;
0424 ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep;
0425 ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;
0426 ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;
0427 ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;
0428 ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG;
0429 ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
0430 ONIG_EXTERN OnigSyntaxType OnigSyntaxPython;
0431 ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma;
0432
0433
0434 #define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS)
0435 #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic)
0436 #define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended)
0437 #define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs)
0438 #define ONIG_SYNTAX_GREP (&OnigSyntaxGrep)
0439 #define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex)
0440 #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
0441 #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
0442 #define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG)
0443 #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
0444 #define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython)
0445 #define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma)
0446
0447
0448 ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
0449 #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax
0450
0451
0452 #define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0)
0453 #define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1)
0454 #define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2)
0455 #define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3)
0456 #define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4)
0457 #define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5)
0458 #define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6)
0459 #define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7)
0460 #define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8)
0461 #define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9)
0462 #define ONIG_SYN_OP_VBAR_ALT (1U<<10)
0463 #define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11)
0464 #define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12)
0465 #define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13)
0466 #define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14)
0467 #define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15)
0468 #define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16)
0469 #define ONIG_SYN_OP_BRACKET_CC (1U<<17)
0470 #define ONIG_SYN_OP_ESC_W_WORD (1U<<18)
0471 #define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19)
0472 #define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20)
0473 #define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21)
0474 #define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22)
0475 #define ONIG_SYN_OP_LINE_ANCHOR (1U<<23)
0476 #define ONIG_SYN_OP_POSIX_BRACKET (1U<<24)
0477 #define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25)
0478 #define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26)
0479 #define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27)
0480 #define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28)
0481 #define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29)
0482 #define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30)
0483 #define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31)
0484
0485 #define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0)
0486 #define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1)
0487 #define ONIG_SYN_OP2_OPTION_PERL (1U<<2)
0488 #define ONIG_SYN_OP2_OPTION_RUBY (1U<<3)
0489 #define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4)
0490 #define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5)
0491 #define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6)
0492 #define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7)
0493 #define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8)
0494 #define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9)
0495 #define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10)
0496 #define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11)
0497 #define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12)
0498 #define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13)
0499 #define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14)
0500 #define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15)
0501 #define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16)
0502 #define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17)
0503
0504 #define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19)
0505 #define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20)
0506 #define ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE (1U<<21)
0507 #define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<22)
0508 #define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23)
0509 #define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24)
0510 #define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25)
0511 #define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26)
0512 #define ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT (1U<<26)
0513 #define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27)
0514 #define ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (1U<<28)
0515 #define ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (1U<<29)
0516 #define ONIG_SYN_OP2_OPTION_ONIGURUMA (1U<<30)
0517 #define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAME (1U<<31)
0518
0519
0520 #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31)
0521 #define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0)
0522 #define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1)
0523 #define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2)
0524 #define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3)
0525 #define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4)
0526 #define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5)
0527 #define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6)
0528 #define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7)
0529 #define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8)
0530 #define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9)
0531 #define ONIG_SYN_ISOLATED_OPTION_CONTINUE_BRANCH (1U<<10)
0532 #define ONIG_SYN_VARIABLE_LEN_LOOK_BEHIND (1U<<11)
0533 #define ONIG_SYN_PYTHON (1U<<12)
0534 #define ONIG_SYN_WHOLE_OPTIONS (1U<<13)
0535
0536
0537 #define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20)
0538 #define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21)
0539 #define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22)
0540 #define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23)
0541 #define ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC (1U<<26)
0542
0543 #define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24)
0544 #define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25)
0545
0546
0547 #define ONIG_META_CHAR_ESCAPE 0
0548 #define ONIG_META_CHAR_ANYCHAR 1
0549 #define ONIG_META_CHAR_ANYTIME 2
0550 #define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3
0551 #define ONIG_META_CHAR_ONE_OR_MORE_TIME 4
0552 #define ONIG_META_CHAR_ANYCHAR_ANYTIME 5
0553
0554 #define ONIG_INEFFECTIVE_META_CHAR 0
0555
0556
0557 #define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000)
0558
0559
0560 #define ONIG_NORMAL 0
0561 #define ONIG_VALUE_IS_NOT_SET 1
0562 #define ONIG_MISMATCH -1
0563 #define ONIG_NO_SUPPORT_CONFIG -2
0564 #define ONIG_ABORT -3
0565
0566
0567 #define ONIGERR_MEMORY -5
0568 #define ONIGERR_TYPE_BUG -6
0569 #define ONIGERR_PARSER_BUG -11
0570 #define ONIGERR_STACK_BUG -12
0571 #define ONIGERR_UNDEFINED_BYTECODE -13
0572 #define ONIGERR_UNEXPECTED_BYTECODE -14
0573 #define ONIGERR_MATCH_STACK_LIMIT_OVER -15
0574 #define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
0575 #define ONIGERR_RETRY_LIMIT_IN_MATCH_OVER -17
0576 #define ONIGERR_RETRY_LIMIT_IN_SEARCH_OVER -18
0577 #define ONIGERR_SUBEXP_CALL_LIMIT_IN_SEARCH_OVER -19
0578 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21
0579 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
0580 #define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
0581 #define ONIGERR_FAIL_TO_INITIALIZE -23
0582
0583 #define ONIGERR_INVALID_ARGUMENT -30
0584
0585 #define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100
0586 #define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101
0587 #define ONIGERR_EMPTY_CHAR_CLASS -102
0588 #define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103
0589 #define ONIGERR_END_PATTERN_AT_ESCAPE -104
0590 #define ONIGERR_END_PATTERN_AT_META -105
0591 #define ONIGERR_END_PATTERN_AT_CONTROL -106
0592 #define ONIGERR_META_CODE_SYNTAX -108
0593 #define ONIGERR_CONTROL_CODE_SYNTAX -109
0594 #define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110
0595 #define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111
0596 #define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112
0597 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113
0598 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114
0599 #define ONIGERR_NESTED_REPEAT_OPERATOR -115
0600 #define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116
0601 #define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117
0602 #define ONIGERR_END_PATTERN_IN_GROUP -118
0603 #define ONIGERR_UNDEFINED_GROUP_OPTION -119
0604 #define ONIGERR_INVALID_GROUP_OPTION -120
0605 #define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121
0606 #define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122
0607 #define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123
0608
0609 #define ONIGERR_TOO_BIG_NUMBER -200
0610 #define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201
0611 #define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202
0612 #define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203
0613 #define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204
0614 #define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205
0615 #define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206
0616 #define ONIGERR_TOO_BIG_BACKREF_NUMBER -207
0617 #define ONIGERR_INVALID_BACKREF -208
0618 #define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209
0619 #define ONIGERR_TOO_MANY_CAPTURES -210
0620 #define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212
0621 #define ONIGERR_UNDEFINED_OPERATOR -213
0622 #define ONIGERR_EMPTY_GROUP_NAME -214
0623 #define ONIGERR_INVALID_GROUP_NAME -215
0624 #define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216
0625 #define ONIGERR_UNDEFINED_NAME_REFERENCE -217
0626 #define ONIGERR_UNDEFINED_GROUP_REFERENCE -218
0627 #define ONIGERR_MULTIPLEX_DEFINED_NAME -219
0628 #define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220
0629 #define ONIGERR_NEVER_ENDING_RECURSION -221
0630 #define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222
0631 #define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223
0632 #define ONIGERR_INVALID_IF_ELSE_SYNTAX -224
0633 #define ONIGERR_INVALID_ABSENT_GROUP_PATTERN -225
0634 #define ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN -226
0635 #define ONIGERR_INVALID_CALLOUT_PATTERN -227
0636 #define ONIGERR_INVALID_CALLOUT_NAME -228
0637 #define ONIGERR_UNDEFINED_CALLOUT_NAME -229
0638 #define ONIGERR_INVALID_CALLOUT_BODY -230
0639 #define ONIGERR_INVALID_CALLOUT_TAG_NAME -231
0640 #define ONIGERR_INVALID_CALLOUT_ARG -232
0641 #define ONIGERR_INVALID_CODE_POINT_VALUE -400
0642 #define ONIGERR_INVALID_WIDE_CHAR_VALUE -400
0643 #define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401
0644 #define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402
0645 #define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403
0646 #define ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS -404
0647 #define ONIGERR_TOO_LONG_PROPERTY_NAME -405
0648 #define ONIGERR_VERY_INEFFICIENT_PATTERN -406
0649 #define ONIGERR_LIBRARY_IS_NOT_INITIALIZED -500
0650
0651
0652
0653
0654
0655
0656 #define ONIG_MAX_CAPTURE_HISTORY_GROUP 31
0657 #define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \
0658 ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i])
0659
0660 typedef struct OnigCaptureTreeNodeStruct {
0661 int group;
0662 int beg;
0663 int end;
0664 int allocated;
0665 int num_childs;
0666 struct OnigCaptureTreeNodeStruct** childs;
0667 } OnigCaptureTreeNode;
0668
0669
0670 struct re_registers {
0671 int allocated;
0672 int num_regs;
0673 int* beg;
0674 int* end;
0675
0676 OnigCaptureTreeNode* history_root;
0677 };
0678
0679
0680 #define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1
0681 #define ONIG_TRAVERSE_CALLBACK_AT_LAST 2
0682 #define ONIG_TRAVERSE_CALLBACK_AT_BOTH \
0683 ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST )
0684
0685
0686 #define ONIG_REGION_NOTPOS -1
0687
0688 typedef struct re_registers OnigRegion;
0689
0690 typedef struct {
0691 OnigEncoding enc;
0692 OnigUChar* par;
0693 OnigUChar* par_end;
0694 } OnigErrorInfo;
0695
0696 typedef struct {
0697 int lower;
0698 int upper;
0699 } OnigRepeatRange;
0700
0701 typedef void (*OnigWarnFunc) P_((const char* s));
0702 extern void onig_null_warn P_((const char* s));
0703 #define ONIG_NULL_WARN onig_null_warn
0704
0705 #define ONIG_CHAR_TABLE_SIZE 256
0706
0707 struct re_pattern_buffer;
0708 typedef struct re_pattern_buffer OnigRegexType;
0709 typedef OnigRegexType* OnigRegex;
0710
0711 #ifndef ONIG_ESCAPE_REGEX_T_COLLISION
0712 typedef OnigRegexType regex_t;
0713 #endif
0714
0715 struct OnigRegSetStruct;
0716 typedef struct OnigRegSetStruct OnigRegSet;
0717
0718 typedef enum {
0719 ONIG_REGSET_POSITION_LEAD = 0,
0720 ONIG_REGSET_REGEX_LEAD = 1,
0721 ONIG_REGSET_PRIORITY_TO_REGEX_ORDER = 2
0722 } OnigRegSetLead;
0723
0724 typedef struct {
0725 int num_of_elements;
0726 OnigEncoding pattern_enc;
0727 OnigEncoding target_enc;
0728 OnigSyntaxType* syntax;
0729 OnigOptionType option;
0730 OnigCaseFoldType case_fold_flag;
0731 } OnigCompileInfo;
0732
0733 typedef int (*OnigCallbackEachMatchFunc)(const OnigUChar* str, const OnigUChar* end, const OnigUChar* match_start, OnigRegion* region, void* user_data);
0734
0735
0736
0737 typedef enum {
0738 ONIG_CALLOUT_IN_PROGRESS = 1,
0739 ONIG_CALLOUT_IN_RETRACTION = 2
0740 } OnigCalloutIn;
0741
0742 #define ONIG_CALLOUT_IN_BOTH (ONIG_CALLOUT_IN_PROGRESS | ONIG_CALLOUT_IN_RETRACTION)
0743
0744 typedef enum {
0745 ONIG_CALLOUT_OF_CONTENTS = 0,
0746 ONIG_CALLOUT_OF_NAME = 1
0747 } OnigCalloutOf;
0748
0749 typedef enum {
0750 ONIG_CALLOUT_TYPE_SINGLE = 0,
0751 ONIG_CALLOUT_TYPE_START_CALL = 1,
0752 ONIG_CALLOUT_TYPE_BOTH_CALL = 2,
0753 ONIG_CALLOUT_TYPE_START_MARK_END_CALL = 3,
0754 } OnigCalloutType;
0755
0756
0757 #define ONIG_NON_NAME_ID -1
0758 #define ONIG_NON_CALLOUT_NUM 0
0759
0760 #define ONIG_CALLOUT_MAX_ARGS_NUM 4
0761 #define ONIG_CALLOUT_DATA_SLOT_NUM 5
0762
0763 struct OnigCalloutArgsStruct;
0764 typedef struct OnigCalloutArgsStruct OnigCalloutArgs;
0765
0766 typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data);
0767
0768
0769 typedef enum {
0770 ONIG_CALLOUT_FAIL = 1,
0771 ONIG_CALLOUT_SUCCESS = 0
0772 } OnigCalloutResult;
0773
0774 typedef enum {
0775 ONIG_TYPE_VOID = 0,
0776 ONIG_TYPE_LONG = 1<<0,
0777 ONIG_TYPE_CHAR = 1<<1,
0778 ONIG_TYPE_STRING = 1<<2,
0779 ONIG_TYPE_POINTER = 1<<3,
0780 ONIG_TYPE_TAG = 1<<4,
0781 } OnigType;
0782
0783 typedef union {
0784 long l;
0785 OnigCodePoint c;
0786 struct {
0787 OnigUChar* start;
0788 OnigUChar* end;
0789 } s;
0790 void* p;
0791 int tag;
0792 } OnigValue;
0793
0794
0795 struct OnigMatchParamStruct;
0796 typedef struct OnigMatchParamStruct OnigMatchParam;
0797
0798
0799
0800
0801 ONIG_EXTERN
0802 int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings));
0803
0804 ONIG_EXTERN
0805 int onig_init P_((void));
0806 ONIG_EXTERN
0807 int ONIG_VARIADIC_FUNC_ATTR onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...));
0808 ONIG_EXTERN
0809 int onig_is_error_code_needs_param PV_((int code));
0810 ONIG_EXTERN
0811 void onig_set_warn_func P_((OnigWarnFunc f));
0812 ONIG_EXTERN
0813 void onig_set_verb_warn_func P_((OnigWarnFunc f));
0814 ONIG_EXTERN
0815 int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
0816 ONIG_EXTERN
0817 int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax));
0818 int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
0819 ONIG_EXTERN
0820 int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));
0821 ONIG_EXTERN
0822 void onig_free P_((OnigRegex));
0823 ONIG_EXTERN
0824 void onig_free_body P_((OnigRegex));
0825 ONIG_EXTERN
0826 int onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg);
0827 ONIG_EXTERN
0828 int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
0829 ONIG_EXTERN
0830 int onig_search_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
0831 ONIG_EXTERN
0832 int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
0833 ONIG_EXTERN
0834 int onig_match_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
0835
0836 ONIG_EXTERN
0837 int onig_regset_new P_((OnigRegSet** rset, int n, OnigRegex regs[]));
0838 ONIG_EXTERN
0839 int onig_regset_add P_((OnigRegSet* set, OnigRegex reg));
0840 ONIG_EXTERN
0841 int onig_regset_replace P_((OnigRegSet* set, int at, OnigRegex reg));
0842 ONIG_EXTERN
0843 void onig_regset_free P_((OnigRegSet* set));
0844 ONIG_EXTERN
0845 int onig_regset_number_of_regex P_((OnigRegSet* set));
0846 ONIG_EXTERN
0847 OnigRegex onig_regset_get_regex P_((OnigRegSet* set, int at));
0848 ONIG_EXTERN
0849 OnigRegion* onig_regset_get_region P_((OnigRegSet* set, int at));
0850 ONIG_EXTERN
0851 int onig_regset_search P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos));
0852 ONIG_EXTERN
0853 int onig_regset_search_with_param P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos));
0854
0855 ONIG_EXTERN
0856 OnigRegion* onig_region_new P_((void));
0857 ONIG_EXTERN
0858 void onig_region_init P_((OnigRegion* region));
0859 ONIG_EXTERN
0860 void onig_region_free P_((OnigRegion* region, int free_self));
0861 ONIG_EXTERN
0862 void onig_region_copy P_((OnigRegion* to, OnigRegion* from));
0863 ONIG_EXTERN
0864 void onig_region_clear P_((OnigRegion* region));
0865 ONIG_EXTERN
0866 int onig_region_resize P_((OnigRegion* region, int n));
0867 ONIG_EXTERN
0868 int onig_region_set P_((OnigRegion* region, int at, int beg, int end));
0869 ONIG_EXTERN
0870 int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums));
0871 ONIG_EXTERN
0872 int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region));
0873 ONIG_EXTERN
0874 int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg));
0875 ONIG_EXTERN
0876 int onig_number_of_names P_((OnigRegex reg));
0877 ONIG_EXTERN
0878 int onig_number_of_captures P_((OnigRegex reg));
0879 ONIG_EXTERN
0880 int onig_number_of_capture_histories P_((OnigRegex reg));
0881 ONIG_EXTERN
0882 OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region));
0883 ONIG_EXTERN
0884 int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg));
0885 ONIG_EXTERN
0886 int onig_noname_group_capture_is_active P_((OnigRegex reg));
0887 ONIG_EXTERN
0888 OnigEncoding onig_get_encoding P_((OnigRegex reg));
0889 ONIG_EXTERN
0890 OnigOptionType onig_get_options P_((OnigRegex reg));
0891 ONIG_EXTERN
0892 OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg));
0893 ONIG_EXTERN
0894 OnigSyntaxType* onig_get_syntax P_((OnigRegex reg));
0895 ONIG_EXTERN
0896 int onig_set_default_syntax P_((OnigSyntaxType* syntax));
0897 ONIG_EXTERN
0898 void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from));
0899 ONIG_EXTERN
0900 unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax));
0901 ONIG_EXTERN
0902 unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax));
0903 ONIG_EXTERN
0904 unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax));
0905 ONIG_EXTERN
0906 OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax));
0907 ONIG_EXTERN
0908 void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op));
0909 ONIG_EXTERN
0910 void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2));
0911 ONIG_EXTERN
0912 void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior));
0913 ONIG_EXTERN
0914 void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options));
0915 ONIG_EXTERN
0916 int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code));
0917 ONIG_EXTERN
0918 void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from));
0919 ONIG_EXTERN
0920 OnigCaseFoldType onig_get_default_case_fold_flag P_((void));
0921 ONIG_EXTERN
0922 int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag));
0923 ONIG_EXTERN
0924 unsigned int onig_get_match_stack_limit_size P_((void));
0925 ONIG_EXTERN
0926 int onig_set_match_stack_limit_size P_((unsigned int size));
0927 ONIG_EXTERN
0928 unsigned long onig_get_retry_limit_in_match P_((void));
0929 ONIG_EXTERN
0930 int onig_set_retry_limit_in_match P_((unsigned long n));
0931 ONIG_EXTERN
0932 unsigned long onig_get_retry_limit_in_search P_((void));
0933 ONIG_EXTERN
0934 int onig_set_retry_limit_in_search P_((unsigned long n));
0935 ONIG_EXTERN
0936 unsigned int onig_get_parse_depth_limit P_((void));
0937 ONIG_EXTERN
0938 int onig_set_capture_num_limit P_((int num));
0939 ONIG_EXTERN
0940 int onig_set_parse_depth_limit P_((unsigned int depth));
0941 ONIG_EXTERN
0942 unsigned long onig_get_subexp_call_limit_in_search P_((void));
0943 ONIG_EXTERN
0944 int onig_set_subexp_call_limit_in_search P_((unsigned long n));
0945 ONIG_EXTERN
0946 int onig_get_subexp_call_max_nest_level P_((void));
0947 ONIG_EXTERN
0948 int onig_set_subexp_call_max_nest_level P_((int level));
0949 ONIG_EXTERN
0950 int onig_unicode_define_user_property P_((const char* name, OnigCodePoint* ranges));
0951 ONIG_EXTERN
0952 int onig_end P_((void));
0953 ONIG_EXTERN
0954 const char* onig_version P_((void));
0955 ONIG_EXTERN
0956 const char* onig_copyright P_((void));
0957
0958
0959 ONIG_EXTERN
0960 OnigCallbackEachMatchFunc onig_get_callback_each_match P_((void));
0961 ONIG_EXTERN
0962 int onig_set_callback_each_match P_((OnigCallbackEachMatchFunc f));
0963
0964
0965 ONIG_EXTERN
0966 OnigMatchParam* onig_new_match_param P_((void));
0967 ONIG_EXTERN
0968 void onig_free_match_param P_((OnigMatchParam* p));
0969 ONIG_EXTERN
0970 void onig_free_match_param_content P_((OnigMatchParam* p));
0971 ONIG_EXTERN
0972 int onig_initialize_match_param P_((OnigMatchParam* mp));
0973 ONIG_EXTERN
0974 int onig_set_match_stack_limit_size_of_match_param P_((OnigMatchParam* param, unsigned int limit));
0975 ONIG_EXTERN
0976 int onig_set_retry_limit_in_match_of_match_param P_((OnigMatchParam* param, unsigned long limit));
0977 ONIG_EXTERN
0978 int onig_set_retry_limit_in_search_of_match_param P_((OnigMatchParam* param, unsigned long limit));
0979 ONIG_EXTERN
0980 int onig_set_progress_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f));
0981 ONIG_EXTERN
0982 int onig_set_retraction_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f));
0983 ONIG_EXTERN
0984 int onig_set_callout_user_data_of_match_param P_((OnigMatchParam* param, void* user_data));
0985
0986
0987 ONIG_EXTERN
0988 OnigCalloutFunc onig_get_progress_callout P_((void));
0989 ONIG_EXTERN
0990 int onig_set_progress_callout P_((OnigCalloutFunc f));
0991 ONIG_EXTERN
0992 OnigCalloutFunc onig_get_retraction_callout P_((void));
0993 ONIG_EXTERN
0994 int onig_set_retraction_callout P_((OnigCalloutFunc f));
0995 ONIG_EXTERN
0996 int onig_set_callout_of_name P_((OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int optional_arg_num, OnigValue opt_defaults[]));
0997 ONIG_EXTERN
0998 OnigUChar* onig_get_callout_name_by_name_id P_((int id));
0999 ONIG_EXTERN
1000 int onig_get_callout_num_by_tag P_((OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end));
1001 ONIG_EXTERN
1002 int onig_get_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val));
1003 ONIG_EXTERN
1004 int onig_set_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val));
1005 ONIG_EXTERN
1006 int onig_get_callout_data_by_tag_dont_clear_old P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val));
1007
1008
1009 ONIG_EXTERN
1010 int onig_get_callout_num_by_callout_args P_((OnigCalloutArgs* args));
1011 ONIG_EXTERN
1012 OnigCalloutIn onig_get_callout_in_by_callout_args P_((OnigCalloutArgs* args));
1013 ONIG_EXTERN
1014 int onig_get_name_id_by_callout_args P_((OnigCalloutArgs* args));
1015 ONIG_EXTERN
1016 const OnigUChar* onig_get_contents_by_callout_args P_((OnigCalloutArgs* args));
1017 ONIG_EXTERN
1018 const OnigUChar* onig_get_contents_end_by_callout_args P_((OnigCalloutArgs* args));
1019 ONIG_EXTERN
1020 int onig_get_args_num_by_callout_args P_((OnigCalloutArgs* args));
1021 ONIG_EXTERN
1022 int onig_get_passed_args_num_by_callout_args P_((OnigCalloutArgs* args));
1023 ONIG_EXTERN
1024 int onig_get_arg_by_callout_args P_((OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val));
1025 ONIG_EXTERN
1026 const OnigUChar* onig_get_string_by_callout_args P_((OnigCalloutArgs* args));
1027 ONIG_EXTERN
1028 const OnigUChar* onig_get_string_end_by_callout_args P_((OnigCalloutArgs* args));
1029 ONIG_EXTERN
1030 const OnigUChar* onig_get_start_by_callout_args P_((OnigCalloutArgs* args));
1031 ONIG_EXTERN
1032 const OnigUChar* onig_get_right_range_by_callout_args P_((OnigCalloutArgs* args));
1033 ONIG_EXTERN
1034 const OnigUChar* onig_get_current_by_callout_args P_((OnigCalloutArgs* args));
1035 ONIG_EXTERN
1036 OnigRegex onig_get_regex_by_callout_args P_((OnigCalloutArgs* args));
1037 ONIG_EXTERN
1038 unsigned long onig_get_retry_counter_by_callout_args P_((OnigCalloutArgs* args));
1039 ONIG_EXTERN
1040 int onig_callout_tag_is_exist_at_callout_num P_((OnigRegex reg, int callout_num));
1041 ONIG_EXTERN
1042 const OnigUChar* onig_get_callout_tag_start P_((OnigRegex reg, int callout_num));
1043 ONIG_EXTERN
1044 const OnigUChar* onig_get_callout_tag_end P_((OnigRegex reg, int callout_num));
1045 ONIG_EXTERN
1046 int onig_get_callout_data_dont_clear_old P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val));
1047 ONIG_EXTERN
1048 int onig_get_callout_data_by_callout_args_self_dont_clear_old P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val));
1049 ONIG_EXTERN
1050 int onig_get_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val));
1051 ONIG_EXTERN
1052 int onig_get_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val));
1053 ONIG_EXTERN
1054 int onig_get_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val));
1055 ONIG_EXTERN
1056 int onig_set_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val));
1057 ONIG_EXTERN
1058 int onig_set_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val));
1059 ONIG_EXTERN
1060 int onig_set_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val));
1061 ONIG_EXTERN
1062 int onig_get_capture_range_in_callout P_((OnigCalloutArgs* args, int mem_num, int* begin, int* end));
1063 ONIG_EXTERN
1064 int onig_get_used_stack_size_in_callout P_((OnigCalloutArgs* args, int* used_num, int* used_bytes));
1065
1066
1067 ONIG_EXTERN
1068 int onig_builtin_fail P_((OnigCalloutArgs* args, void* user_data));
1069 ONIG_EXTERN
1070 int onig_builtin_mismatch P_((OnigCalloutArgs* args, void* user_data));
1071 ONIG_EXTERN
1072 int onig_builtin_error P_((OnigCalloutArgs* args, void* user_data));
1073 ONIG_EXTERN
1074 int onig_builtin_count P_((OnigCalloutArgs* args, void* user_data));
1075 ONIG_EXTERN
1076 int onig_builtin_total_count P_((OnigCalloutArgs* args, void* user_data));
1077 ONIG_EXTERN
1078 int onig_builtin_max P_((OnigCalloutArgs* args, void* user_data));
1079 ONIG_EXTERN
1080 int onig_builtin_cmp P_((OnigCalloutArgs* args, void* user_data));
1081
1082 ONIG_EXTERN
1083 int onig_setup_builtin_monitors_by_ascii_encoded_name P_((void* fp));
1084
1085 #ifdef __cplusplus
1086 }
1087 #endif
1088
1089 #endif