From 83ea1be016fd5fc27ee721cf62a18716675815dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 2 May 2018 17:28:55 +0200 Subject: New upstream version 6.8.2 --- sample/callout.c | 64 ++++++++++++++++++++++++++++++++++---------------------- sample/count.c | 4 ---- 2 files changed, 39 insertions(+), 29 deletions(-) (limited to 'sample') diff --git a/sample/callout.c b/sample/callout.c index ab89543..b5e3d91 100644 --- a/sample/callout.c +++ b/sample/callout.c @@ -13,7 +13,6 @@ callout_body(OnigCalloutArgs* args, void* user_data) int i; int n; int begin, end; - int len; int used_num; int used_bytes; OnigCalloutIn in; @@ -41,6 +40,8 @@ callout_body(OnigCalloutArgs* args, void* user_data) in == ONIG_CALLOUT_IN_PROGRESS ? "PROGRESS" : "RETRACTION", contents, start, current); + fprintf(stdout, "user_data: %s\n", (char* )user_data); + (void )onig_get_used_stack_size_in_callout(args, &used_num, &used_bytes); fprintf(stdout, "stack: used_num: %d, used_bytes: %d\n", used_num, used_bytes); @@ -119,7 +120,7 @@ bar(OnigCalloutArgs* args, void* user_data) } static int -test(OnigEncoding enc, char* in_pattern, char* in_str) +test(OnigEncoding enc, OnigMatchParam* mp, char* in_pattern, char* in_str) { int r; unsigned char *start, *range, *end; @@ -146,7 +147,8 @@ test(OnigEncoding enc, char* in_pattern, char* in_str) end = str + strlen((char* )str); start = str; range = end; - r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); + r = onig_search_with_param(reg, str, end, start, range, region, + ONIG_OPTION_NONE, mp); if (r >= 0) { int i; @@ -173,11 +175,13 @@ extern int main(int argc, char* argv[]) { int r; int id; + void* user_data; UChar* name; OnigEncoding use_encs[1]; unsigned int arg_types[4]; OnigValue opt_defaults[4]; OnigEncoding enc; + OnigMatchParam* mp; enc = ONIG_ENCODING_UTF8; use_encs[0] = enc; @@ -219,36 +223,46 @@ extern int main(int argc, char* argv[]) (void)onig_set_progress_callout(progress_callout_func); (void)onig_set_retraction_callout(retraction_callout_func); + mp = onig_new_match_param(); + + user_data = (void* )"something data"; + r = onig_set_callout_user_data_of_match_param(mp, user_data); + if (r != ONIG_NORMAL) { + fprintf(stderr, "ERROR: fail onig_set_callout_user_data_of_match_param(): %d\n", r); + } + /* callout of contents */ - test(enc, "a+(?{foo bar baz...}X)$", "aaab"); - test(enc, "(?{{!{}#$%&'()=-~^|[_]`@*:+;<>?/.\\,}}[symbols])c", "abc"); - test(enc, "\\A(...)(?{{{booooooooooooo{{ooo}}ooooooooooz}}}<)", "aaab"); - test(enc, "\\A(?!a(?{in prec-read-not}[xxx]X)b)", "ac"); - test(enc, "(??/.\\,}}[symbols])c", "abc"); + test(enc, mp, "\\A(...)(?{{{booooooooooooo{{ooo}}ooooooooooz}}}<)", "aaab"); + test(enc, mp, "\\A(?!a(?{in prec-read-not}[xxx]X)b)", "ac"); + test(enc, mp, "(?=,4})", "abababcabababaa"); + test(enc, mp, "\\A(*foo)abc", "abc"); + test(enc, mp, "abc(?:(*FAIL)|$)", "abcabc"); + test(enc, mp, "abc(?:$|(*MISMATCH)|abc$)", "abcabc"); + test(enc, mp, "abc(?:(*ERROR)|$)", "abcabc"); + test(enc, mp, "ab(*foo{})(*FAIL)", "abc"); + test(enc, mp, "abc(d|(*ERROR{-999}))", "abc"); + test(enc, mp, "ab(*bar{372,I am a bar's argument,あ})c(*FAIL)", "abc"); + test(enc, mp, "ab(*bar{1234567890})", "abc"); + test(enc, mp, "(?:a(*MAX{2})|b)*", "abbabbabbabb"); + test(enc, mp, "(?:(*MAX{2})a|b)*", "abbabbabbabb"); + test(enc, mp, "(?:(*MAX{1})a|b)*", "bbbbbabbbbbabbbbb"); + test(enc, mp, "(?:(*MAX{3})a|(*MAX{4})b)*", "bbbaabbab"); + test(enc, mp, "(?:(*MAX[A]{3})a|(*MAX[B]{5})b)*(*CMP{A,<,B})", "abababc"); + test(enc, mp, "(?:(*MAX[A]{7})a|(*MAX[B]{5})b)*(*CMP{A,>=,4})", "abababcabababaa"); + test(enc, mp, "(?:(*MAX[T]{3})a)*(?:(*MAX{T})c)*", "aaccc"); /* callouts in condition */ - test(enc, "\\A(?(?{in condition})then|else)\\z", "then"); - test(enc, "\\A(?(*FAIL)then|else)\\z", "else"); + test(enc, mp, "\\A(?(?{in condition})then|else)\\z", "then"); + test(enc, mp, "\\A(?(*FAIL)then|else)\\z", "else"); /* monitor test */ - test(enc, "(?:(*MON{X})(*FAIL)|.{,3}(*MON[FOO])k)", "abcdefghijk"); + test(enc, mp, "(?:(*MON{X})(*FAIL)|.{,3}(*MON[FOO])k)", "abcdefghijk"); + onig_free_match_param(mp); onig_end(); return 0; } diff --git a/sample/count.c b/sample/count.c index 0f0e1f2..2b67db7 100644 --- a/sample/count.c +++ b/sample/count.c @@ -88,12 +88,8 @@ test(OnigEncoding enc, OnigMatchParam* mp, char* in_pattern, char* in_str) extern int main(int argc, char* argv[]) { int r; - int id; - UChar* name; OnigMatchParam* mp; OnigEncoding encs[3]; - OnigType arg_types[4]; - OnigValue opt_defaults[4]; encs[0] = ONIG_ENCODING_UTF8; encs[1] = ONIG_ENCODING_UTF16_BE; -- cgit v1.2.3