Ruby
2.0.0p247(2013-06-27revision41674)
|
00001 /********************************************************************** 00002 regsyntax.c - Onigmo (Oniguruma-mod) (regular expression library) 00003 **********************************************************************/ 00004 /*- 00005 * Copyright (c) 2002-2006 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> 00006 * Copyright (c) 2011-2012 K.Takata <kentkt AT csc DOT jp> 00007 * All rights reserved. 00008 * 00009 * Redistribution and use in source and binary forms, with or without 00010 * modification, are permitted provided that the following conditions 00011 * are met: 00012 * 1. Redistributions of source code must retain the above copyright 00013 * notice, this list of conditions and the following disclaimer. 00014 * 2. Redistributions in binary form must reproduce the above copyright 00015 * notice, this list of conditions and the following disclaimer in the 00016 * documentation and/or other materials provided with the distribution. 00017 * 00018 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 00019 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00021 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 00022 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00023 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00024 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00025 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00026 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00027 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00028 * SUCH DAMAGE. 00029 */ 00030 00031 #include "regint.h" 00032 00033 const OnigSyntaxType OnigSyntaxASIS = { 00034 0 00035 , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE 00036 , 0 00037 , ONIG_OPTION_NONE 00038 , 00039 { 00040 (OnigCodePoint )'\\' /* esc */ 00041 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00042 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00043 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00044 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00045 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00046 } 00047 }; 00048 00049 const OnigSyntaxType OnigSyntaxPosixBasic = { 00050 ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | 00051 ONIG_SYN_OP_ESC_BRACE_INTERVAL ) 00052 , 0 00053 , 0 00054 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE ) 00055 , 00056 { 00057 (OnigCodePoint )'\\' /* esc */ 00058 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00059 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00060 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00061 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00062 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00063 } 00064 }; 00065 00066 const OnigSyntaxType OnigSyntaxPosixExtended = { 00067 ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP | 00068 ONIG_SYN_OP_BRACE_INTERVAL | 00069 ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT ) 00070 , 0 00071 , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | 00072 ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | 00073 ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP | 00074 ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) 00075 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE ) 00076 , 00077 { 00078 (OnigCodePoint )'\\' /* esc */ 00079 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00080 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00081 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00082 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00083 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00084 } 00085 }; 00086 00087 const OnigSyntaxType OnigSyntaxEmacs = { 00088 ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | 00089 ONIG_SYN_OP_ESC_BRACE_INTERVAL | 00090 ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT | 00091 ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | 00092 ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF | 00093 ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS ) 00094 , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR 00095 , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC 00096 , ONIG_OPTION_NONE 00097 , 00098 { 00099 (OnigCodePoint )'\\' /* esc */ 00100 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00101 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00102 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00103 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00104 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00105 } 00106 }; 00107 00108 const OnigSyntaxType OnigSyntaxGrep = { 00109 ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET | 00110 ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | 00111 ONIG_SYN_OP_ESC_VBAR_ALT | 00112 ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_ESC_PLUS_ONE_INF | 00113 ONIG_SYN_OP_ESC_QMARK_ZERO_ONE | ONIG_SYN_OP_LINE_ANCHOR | 00114 ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND | 00115 ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF ) 00116 , 0 00117 , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC ) 00118 , ONIG_OPTION_NONE 00119 , 00120 { 00121 (OnigCodePoint )'\\' /* esc */ 00122 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00123 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00124 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00125 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00126 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00127 } 00128 }; 00129 00130 const OnigSyntaxType OnigSyntaxGnuRegex = { 00131 SYN_GNU_REGEX_OP 00132 , 0 00133 , SYN_GNU_REGEX_BV 00134 , ONIG_OPTION_NONE 00135 , 00136 { 00137 (OnigCodePoint )'\\' /* esc */ 00138 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00139 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00140 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00141 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00142 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00143 } 00144 }; 00145 00146 const OnigSyntaxType OnigSyntaxJava = { 00147 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | 00148 ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL | 00149 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 ) 00150 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) 00151 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | 00152 ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | 00153 ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP | 00154 ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 | 00155 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY ) 00156 , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND ) 00157 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_ASCII_RANGE | 00158 ONIG_OPTION_WORD_BOUND_ALL_RANGE ) 00159 , 00160 { 00161 (OnigCodePoint )'\\' /* esc */ 00162 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00163 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00164 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00165 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00166 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00167 } 00168 }; 00169 00170 /* Perl 5.8 */ 00171 const OnigSyntaxType OnigSyntaxPerl58 = { 00172 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | 00173 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | 00174 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | 00175 ONIG_SYN_OP_ESC_C_CONTROL ) 00176 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) 00177 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | 00178 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | 00179 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | 00180 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | 00181 ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | 00182 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION) 00183 , SYN_GNU_REGEX_BV 00184 , ONIG_OPTION_SINGLELINE 00185 , 00186 { 00187 (OnigCodePoint )'\\' /* esc */ 00188 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00189 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00190 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00191 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00192 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00193 } 00194 }; 00195 00196 /* Perl 5.8 + named group */ 00197 const OnigSyntaxType OnigSyntaxPerl58_NG = { 00198 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | 00199 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | 00200 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | 00201 ONIG_SYN_OP_ESC_C_CONTROL ) 00202 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) 00203 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | 00204 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | 00205 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | 00206 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | 00207 ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | 00208 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | 00209 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | 00210 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | 00211 ONIG_SYN_OP2_ESC_G_SUBEXP_CALL ) 00212 , ( SYN_GNU_REGEX_BV | 00213 ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | 00214 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) 00215 , ONIG_OPTION_SINGLELINE 00216 , 00217 { 00218 (OnigCodePoint )'\\' /* esc */ 00219 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00220 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00221 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00222 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00223 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00224 } 00225 }; 00226 00227 /* Perl 5.10+ */ 00228 const OnigSyntaxType OnigSyntaxPerl = { 00229 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | 00230 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | 00231 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | 00232 ONIG_SYN_OP_ESC_C_CONTROL ) 00233 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) 00234 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | 00235 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | 00236 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | 00237 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | 00238 ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER | 00239 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | 00240 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | 00241 ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | 00242 ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK | 00243 ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | 00244 ONIG_SYN_OP2_QMARK_SUBEXP_CALL | 00245 ONIG_SYN_OP2_ESC_G_BRACE_BACKREF | 00246 ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP | 00247 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | 00248 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF ) 00249 , ( SYN_GNU_REGEX_BV | 00250 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | 00251 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL ) 00252 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_CAPTURE_GROUP ) 00253 , 00254 { 00255 (OnigCodePoint )'\\' /* esc */ 00256 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00257 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00258 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00259 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00260 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00261 } 00262 }; 00263 00264 const OnigSyntaxType OnigSyntaxPython = { 00265 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | 00266 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | 00267 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | 00268 ONIG_SYN_OP_ESC_C_CONTROL ) 00269 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) 00270 , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | 00271 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | 00272 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | 00273 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | 00274 ONIG_SYN_OP2_ESC_V_VTAB | 00275 ONIG_SYN_OP2_ESC_U_HEX4 | 00276 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION | 00277 ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP ) 00278 , ( SYN_GNU_REGEX_BV | 00279 ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV ) 00280 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_ASCII_RANGE ) 00281 , 00282 { 00283 (OnigCodePoint )'\\' /* esc */ 00284 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ 00285 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ 00286 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ 00287 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ 00288 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ 00289 } 00290 }; 00291 00292 00293 00294 extern int 00295 onig_set_default_syntax(const OnigSyntaxType* syntax) 00296 { 00297 if (IS_NULL(syntax)) 00298 syntax = ONIG_SYNTAX_RUBY; 00299 00300 OnigDefaultSyntax = syntax; 00301 return 0; 00302 } 00303 00304 extern void 00305 onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from) 00306 { 00307 *to = *from; 00308 } 00309 00310 extern void 00311 onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) 00312 { 00313 syntax->op = op; 00314 } 00315 00316 extern void 00317 onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) 00318 { 00319 syntax->op2 = op2; 00320 } 00321 00322 extern void 00323 onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) 00324 { 00325 syntax->behavior = behavior; 00326 } 00327 00328 extern void 00329 onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) 00330 { 00331 syntax->options = options; 00332 } 00333 00334 extern unsigned int 00335 onig_get_syntax_op(OnigSyntaxType* syntax) 00336 { 00337 return syntax->op; 00338 } 00339 00340 extern unsigned int 00341 onig_get_syntax_op2(OnigSyntaxType* syntax) 00342 { 00343 return syntax->op2; 00344 } 00345 00346 extern unsigned int 00347 onig_get_syntax_behavior(OnigSyntaxType* syntax) 00348 { 00349 return syntax->behavior; 00350 } 00351 00352 extern OnigOptionType 00353 onig_get_syntax_options(OnigSyntaxType* syntax) 00354 { 00355 return syntax->options; 00356 } 00357 00358 #ifdef USE_VARIABLE_META_CHARS 00359 extern int onig_set_meta_char(OnigSyntaxType* enc, 00360 unsigned int what, OnigCodePoint code) 00361 { 00362 switch (what) { 00363 case ONIG_META_CHAR_ESCAPE: 00364 enc->meta_char_table.esc = code; 00365 break; 00366 case ONIG_META_CHAR_ANYCHAR: 00367 enc->meta_char_table.anychar = code; 00368 break; 00369 case ONIG_META_CHAR_ANYTIME: 00370 enc->meta_char_table.anytime = code; 00371 break; 00372 case ONIG_META_CHAR_ZERO_OR_ONE_TIME: 00373 enc->meta_char_table.zero_or_one_time = code; 00374 break; 00375 case ONIG_META_CHAR_ONE_OR_MORE_TIME: 00376 enc->meta_char_table.one_or_more_time = code; 00377 break; 00378 case ONIG_META_CHAR_ANYCHAR_ANYTIME: 00379 enc->meta_char_table.anychar_anytime = code; 00380 break; 00381 default: 00382 return ONIGERR_INVALID_ARGUMENT; 00383 break; 00384 } 00385 return 0; 00386 } 00387 #endif /* USE_VARIABLE_META_CHARS */ 00388