diff options
| -rw-r--r-- | depend | 17 | ||||
| -rw-r--r-- | ext/ripper/depend | 2 | ||||
| -rw-r--r-- | internal/re.h | 19 | ||||
| -rw-r--r-- | re.c | 120 | ||||
| -rw-r--r-- | string.c | 59 |
5 files changed, 113 insertions, 104 deletions
@@ -4878,6 +4878,7 @@ enum.$(OBJEXT): {$(VPATH)}internal/core/rclass.h enum.$(OBJEXT): {$(VPATH)}internal/core/rdata.h enum.$(OBJEXT): {$(VPATH)}internal/core/rfile.h enum.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +enum.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h enum.$(OBJEXT): {$(VPATH)}internal/core/robject.h enum.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h enum.$(OBJEXT): {$(VPATH)}internal/core/rstring.h @@ -4968,6 +4969,8 @@ enum.$(OBJEXT): {$(VPATH)}internal/xmalloc.h enum.$(OBJEXT): {$(VPATH)}missing.h enum.$(OBJEXT): {$(VPATH)}onigmo.h enum.$(OBJEXT): {$(VPATH)}oniguruma.h +enum.$(OBJEXT): {$(VPATH)}re.h +enum.$(OBJEXT): {$(VPATH)}regex.h enum.$(OBJEXT): {$(VPATH)}ruby_assert.h enum.$(OBJEXT): {$(VPATH)}shape.h enum.$(OBJEXT): {$(VPATH)}st.h @@ -8965,6 +8968,7 @@ marshal.$(OBJEXT): {$(VPATH)}internal/core/rclass.h marshal.$(OBJEXT): {$(VPATH)}internal/core/rdata.h marshal.$(OBJEXT): {$(VPATH)}internal/core/rfile.h marshal.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +marshal.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h marshal.$(OBJEXT): {$(VPATH)}internal/core/robject.h marshal.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h marshal.$(OBJEXT): {$(VPATH)}internal/core/rstring.h @@ -9060,6 +9064,8 @@ marshal.$(OBJEXT): {$(VPATH)}missing.h marshal.$(OBJEXT): {$(VPATH)}node.h marshal.$(OBJEXT): {$(VPATH)}onigmo.h marshal.$(OBJEXT): {$(VPATH)}oniguruma.h +marshal.$(OBJEXT): {$(VPATH)}re.h +marshal.$(OBJEXT): {$(VPATH)}regex.h marshal.$(OBJEXT): {$(VPATH)}ruby_assert.h marshal.$(OBJEXT): {$(VPATH)}ruby_atomic.h marshal.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -10952,6 +10958,7 @@ parse.$(OBJEXT): {$(VPATH)}internal/core/rclass.h parse.$(OBJEXT): {$(VPATH)}internal/core/rdata.h parse.$(OBJEXT): {$(VPATH)}internal/core/rfile.h parse.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +parse.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h parse.$(OBJEXT): {$(VPATH)}internal/core/robject.h parse.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h parse.$(OBJEXT): {$(VPATH)}internal/core/rstring.h @@ -11054,6 +11061,7 @@ parse.$(OBJEXT): {$(VPATH)}parser_st.h parse.$(OBJEXT): {$(VPATH)}probes.dmyh parse.$(OBJEXT): {$(VPATH)}probes.h parse.$(OBJEXT): {$(VPATH)}ractor.h +parse.$(OBJEXT): {$(VPATH)}re.h parse.$(OBJEXT): {$(VPATH)}regenc.h parse.$(OBJEXT): {$(VPATH)}regex.h parse.$(OBJEXT): {$(VPATH)}ruby_assert.h @@ -15946,6 +15954,7 @@ ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rclass.h ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rdata.h ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rfile.h ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/robject.h ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h ruby_parser.$(OBJEXT): {$(VPATH)}internal/core/rstring.h @@ -16037,6 +16046,8 @@ ruby_parser.$(OBJEXT): {$(VPATH)}missing.h ruby_parser.$(OBJEXT): {$(VPATH)}node.h ruby_parser.$(OBJEXT): {$(VPATH)}onigmo.h ruby_parser.$(OBJEXT): {$(VPATH)}oniguruma.h +ruby_parser.$(OBJEXT): {$(VPATH)}re.h +ruby_parser.$(OBJEXT): {$(VPATH)}regex.h ruby_parser.$(OBJEXT): {$(VPATH)}ruby_assert.h ruby_parser.$(OBJEXT): {$(VPATH)}ruby_parser.c ruby_parser.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -19345,6 +19356,7 @@ variable.$(OBJEXT): {$(VPATH)}internal/core/rclass.h variable.$(OBJEXT): {$(VPATH)}internal/core/rdata.h variable.$(OBJEXT): {$(VPATH)}internal/core/rfile.h variable.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +variable.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h variable.$(OBJEXT): {$(VPATH)}internal/core/robject.h variable.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h variable.$(OBJEXT): {$(VPATH)}internal/core/rstring.h @@ -19439,6 +19451,8 @@ variable.$(OBJEXT): {$(VPATH)}onigmo.h variable.$(OBJEXT): {$(VPATH)}oniguruma.h variable.$(OBJEXT): {$(VPATH)}ractor.h variable.$(OBJEXT): {$(VPATH)}ractor_core.h +variable.$(OBJEXT): {$(VPATH)}re.h +variable.$(OBJEXT): {$(VPATH)}regex.h variable.$(OBJEXT): {$(VPATH)}ruby_assert.h variable.$(OBJEXT): {$(VPATH)}ruby_atomic.h variable.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -19839,6 +19853,7 @@ vm.$(OBJEXT): {$(VPATH)}internal/core/rclass.h vm.$(OBJEXT): {$(VPATH)}internal/core/rdata.h vm.$(OBJEXT): {$(VPATH)}internal/core/rfile.h vm.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +vm.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h vm.$(OBJEXT): {$(VPATH)}internal/core/robject.h vm.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h vm.$(OBJEXT): {$(VPATH)}internal/core/rstring.h @@ -19941,6 +19956,8 @@ vm.$(OBJEXT): {$(VPATH)}probes.h vm.$(OBJEXT): {$(VPATH)}probes_helper.h vm.$(OBJEXT): {$(VPATH)}ractor.h vm.$(OBJEXT): {$(VPATH)}ractor_core.h +vm.$(OBJEXT): {$(VPATH)}re.h +vm.$(OBJEXT): {$(VPATH)}regex.h vm.$(OBJEXT): {$(VPATH)}ruby_assert.h vm.$(OBJEXT): {$(VPATH)}ruby_atomic.h vm.$(OBJEXT): {$(VPATH)}rubyparser.h diff --git a/ext/ripper/depend b/ext/ripper/depend index 96d41c87b8..db83378a1d 100644 --- a/ext/ripper/depend +++ b/ext/ripper/depend @@ -474,6 +474,7 @@ ripper.o: $(hdrdir)/ruby/internal/core/rclass.h ripper.o: $(hdrdir)/ruby/internal/core/rdata.h ripper.o: $(hdrdir)/ruby/internal/core/rfile.h ripper.o: $(hdrdir)/ruby/internal/core/rhash.h +ripper.o: $(hdrdir)/ruby/internal/core/rmatch.h ripper.o: $(hdrdir)/ruby/internal/core/robject.h ripper.o: $(hdrdir)/ruby/internal/core/rregexp.h ripper.o: $(hdrdir)/ruby/internal/core/rstring.h @@ -566,6 +567,7 @@ ripper.o: $(hdrdir)/ruby/missing.h ripper.o: $(hdrdir)/ruby/onigmo.h ripper.o: $(hdrdir)/ruby/oniguruma.h ripper.o: $(hdrdir)/ruby/ractor.h +ripper.o: $(hdrdir)/ruby/re.h ripper.o: $(hdrdir)/ruby/regex.h ripper.o: $(hdrdir)/ruby/ruby.h ripper.o: $(hdrdir)/ruby/st.h diff --git a/internal/re.h b/internal/re.h index 2d2eba0dc1..52a05902ad 100644 --- a/internal/re.h +++ b/internal/re.h @@ -10,6 +10,25 @@ */ #include "ruby/internal/stdbool.h" /* for bool */ #include "ruby/ruby.h" /* for VALUE */ +#include "ruby/re.h" /* for struct RMatch and struct re_registers */ + +static inline long +RMATCH_BEG(VALUE match, int i) +{ + return RMATCH(match)->regs.beg[i]; +} + +static inline long +RMATCH_END(VALUE match, int i) +{ + return RMATCH(match)->regs.end[i]; +} + +static inline int +RMATCH_NREGS(VALUE match) +{ + return RMATCH(match)->regs.num_regs; +} /* re.c */ VALUE rb_reg_s_alloc(VALUE klass); @@ -1179,7 +1179,7 @@ static VALUE match_size(VALUE match) { match_check(match); - return INT2FIX(RMATCH_REGS(match)->num_regs); + return INT2FIX(RMATCH_NREGS(match)); } static int name_to_backref_number(const struct re_registers *, VALUE, const char*, const char*); @@ -1193,9 +1193,9 @@ name_to_backref_error(VALUE name) } static void -backref_number_check(struct re_registers *regs, int i) +backref_number_check(VALUE match, int i) { - if (i < 0 || regs->num_regs <= i) + if (i < 0 || RMATCH_NREGS(match) <= i) rb_raise(rb_eIndexError, "index %d out of matches", i); } @@ -1245,12 +1245,11 @@ static VALUE match_offset(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return rb_assoc_new(Qnil, Qnil); update_char_offset(match); @@ -1280,14 +1279,13 @@ static VALUE match_byteoffset(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return rb_assoc_new(Qnil, Qnil); - return rb_assoc_new(LONG2NUM(BEG(i)), LONG2NUM(END(i))); + return rb_assoc_new(LONG2NUM(RMATCH_BEG(match, i)), LONG2NUM(RMATCH_END(match, i))); } @@ -1304,14 +1302,13 @@ static VALUE match_bytebegin(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return Qnil; - return LONG2NUM(BEG(i)); + return LONG2NUM(RMATCH_BEG(match, i)); } @@ -1328,14 +1325,13 @@ static VALUE match_byteend(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return Qnil; - return LONG2NUM(END(i)); + return LONG2NUM(RMATCH_END(match, i)); } @@ -1352,12 +1348,11 @@ static VALUE match_begin(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return Qnil; update_char_offset(match); @@ -1378,12 +1373,11 @@ static VALUE match_end(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return Qnil; update_char_offset(match); @@ -1420,11 +1414,10 @@ static VALUE match_nth(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); - backref_number_check(regs, i); + backref_number_check(match, i); - long start = BEG(i), end = END(i); + long start = RMATCH_BEG(match, i), end = RMATCH_END(match, i); if (start < 0) return Qnil; @@ -1464,12 +1457,11 @@ static VALUE match_nth_length(VALUE match, VALUE n) { int i = match_backref_number(match, n); - struct re_registers *regs = RMATCH_REGS(match); match_check(match); - backref_number_check(regs, i); + backref_number_check(match, i); - if (BEG(i) < 0) + if (RMATCH_BEG(match, i) < 0) return Qnil; update_char_offset(match); @@ -1495,11 +1487,8 @@ rb_match_unbusy(VALUE match) int rb_match_count(VALUE match) { - struct re_registers *regs; if (NIL_P(match)) return -1; - regs = RMATCH_REGS(match); - if (!regs) return -1; - return regs->num_regs; + return RMATCH_NREGS(match); } static void @@ -1892,18 +1881,17 @@ rb_reg_start_with_p(VALUE re, VALUE str) VALUE rb_reg_nth_defined(int nth, VALUE match) { - struct re_registers *regs; if (NIL_P(match)) return Qnil; match_check(match); - regs = RMATCH_REGS(match); - if (nth >= regs->num_regs) { + int num_regs = RMATCH_NREGS(match); + if (nth >= num_regs) { return Qnil; } if (nth < 0) { - nth += regs->num_regs; + nth += num_regs; if (nth <= 0) return Qnil; } - return RBOOL(BEG(nth) != -1); + return RBOOL(RMATCH_BEG(match, nth) != -1); } VALUE @@ -1911,21 +1899,20 @@ rb_reg_nth_match(int nth, VALUE match) { VALUE str; long start, end, len; - struct re_registers *regs; if (NIL_P(match)) return Qnil; match_check(match); - regs = RMATCH_REGS(match); - if (nth >= regs->num_regs) { + int num_regs = RMATCH_NREGS(match); + if (nth >= num_regs) { return Qnil; } if (nth < 0) { - nth += regs->num_regs; + nth += num_regs; if (nth <= 0) return Qnil; } - start = BEG(nth); + start = RMATCH_BEG(match, nth); if (start == -1) return Qnil; - end = END(nth); + end = RMATCH_END(match, nth); len = end - start; str = rb_str_subseq(RMATCH(match)->str, start, len); return str; @@ -1959,13 +1946,11 @@ VALUE rb_reg_match_pre(VALUE match) { VALUE str; - struct re_registers *regs; if (NIL_P(match)) return Qnil; match_check(match); - regs = RMATCH_REGS(match); - if (BEG(0) == -1) return Qnil; - str = rb_str_subseq(RMATCH(match)->str, 0, BEG(0)); + if (RMATCH_BEG(match, 0) == -1) return Qnil; + str = rb_str_subseq(RMATCH(match)->str, 0, RMATCH_BEG(match, 0)); return str; } @@ -1993,14 +1978,12 @@ rb_reg_match_post(VALUE match) { VALUE str; long pos; - struct re_registers *regs; if (NIL_P(match)) return Qnil; match_check(match); - regs = RMATCH_REGS(match); - if (BEG(0) == -1) return Qnil; + if (RMATCH_BEG(match, 0) == -1) return Qnil; str = RMATCH(match)->str; - pos = END(0); + pos = RMATCH_END(match, 0); str = rb_str_subseq(str, pos, RSTRING_LEN(str) - pos); return str; } @@ -2009,14 +1992,12 @@ static int match_last_index(VALUE match) { int i; - struct re_registers *regs; if (NIL_P(match)) return -1; match_check(match); - regs = RMATCH_REGS(match); - if (BEG(0) == -1) return -1; + if (RMATCH_BEG(match, 0) == -1) return -1; - for (i=regs->num_regs-1; BEG(i) == -1 && i > 0; i--) + for (i = RMATCH_NREGS(match) - 1; RMATCH_BEG(match, i) == -1 && i > 0; i--) ; return i; } @@ -2026,8 +2007,8 @@ rb_reg_match_last(VALUE match) { int i = match_last_index(match); if (i <= 0) return Qnil; - struct re_registers *regs = RMATCH_REGS(match); - return rb_str_subseq(RMATCH(match)->str, BEG(i), END(i) - BEG(i)); + long start = RMATCH_BEG(match, i); + return rb_str_subseq(RMATCH(match)->str, start, RMATCH_END(match, i) - start); } VALUE @@ -2065,22 +2046,22 @@ last_paren_match_getter(ID _x, VALUE *_y) static VALUE match_array(VALUE match, int start) { - struct re_registers *regs; VALUE ary; VALUE target; int i; match_check(match); - regs = RMATCH_REGS(match); - ary = rb_ary_new2(regs->num_regs); + int num_regs = RMATCH_NREGS(match); + ary = rb_ary_new2(num_regs); target = RMATCH(match)->str; - for (i=start; i<regs->num_regs; i++) { - if (regs->beg[i] == -1) { + for (i = start; i < num_regs; i++) { + long beg = RMATCH_BEG(match, i); + if (beg == -1) { rb_ary_push(ary, Qnil); } else { - VALUE str = rb_str_subseq(target, regs->beg[i], regs->end[i]-regs->beg[i]); + VALUE str = rb_str_subseq(target, beg, RMATCH_END(match, i) - beg); rb_ary_push(ary, str); } } @@ -2165,7 +2146,7 @@ namev_to_backref_number(const struct re_registers *regs, VALUE re, VALUE name) static VALUE match_ary_subseq(VALUE match, long beg, long len, VALUE result) { - long olen = RMATCH_REGS(match)->num_regs; + long olen = RMATCH_NREGS(match); long j, end = olen < beg+len ? olen : beg+len; if (NIL_P(result)) result = rb_ary_new_capa(len); if (len == 0) return result; @@ -2183,7 +2164,7 @@ static VALUE match_ary_aref(VALUE match, VALUE idx, VALUE result) { long beg, len; - int num_regs = RMATCH_REGS(match)->num_regs; + int num_regs = RMATCH_NREGS(match); /* check if idx is Range */ switch (rb_range_beg_len(idx, &beg, &len, (long)num_regs, !NIL_P(result))) { @@ -2261,7 +2242,7 @@ match_aref(int argc, VALUE *argv, VALUE match) else { long beg = NUM2LONG(idx); long len = NUM2LONG(length); - long num_regs = RMATCH_REGS(match)->num_regs; + long num_regs = RMATCH_NREGS(match); if (len < 0) { return Qnil; } @@ -2601,8 +2582,7 @@ match_inspect(VALUE match) VALUE cname = rb_class_path(rb_obj_class(match)); VALUE str; int i; - struct re_registers *regs = RMATCH_REGS(match); - int num_regs = regs->num_regs; + int num_regs = RMATCH_NREGS(match); struct backref_name_tag *names; VALUE names_obj = Qnil; VALUE regexp = RMATCH(match)->regexp; @@ -4620,8 +4620,7 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str) if (rb_reg_search(sub, str, pos, 0) >= 0) { VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); - pos = rb_str_sublen(str, BEG(0)); + pos = rb_str_sublen(str, RMATCH_BEG(match, 0)); return LONG2NUM(pos); } } @@ -4747,8 +4746,7 @@ rb_str_byteindex_m(int argc, VALUE *argv, VALUE str) if (RB_TYPE_P(sub, T_REGEXP)) { if (rb_reg_search(sub, str, pos, 0) >= 0) { VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); - pos = BEG(0); + pos = RMATCH_BEG(match, 0); return LONG2NUM(pos); } } @@ -4879,8 +4877,7 @@ rb_str_rindex_m(int argc, VALUE *argv, VALUE str) if (rb_reg_search(sub, str, pos, 1) >= 0) { VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); - pos = rb_str_sublen(str, BEG(0)); + pos = rb_str_sublen(str, RMATCH_BEG(match, 0)); return LONG2NUM(pos); } } @@ -5037,8 +5034,7 @@ rb_str_byterindex_m(int argc, VALUE *argv, VALUE str) if (RB_TYPE_P(sub, T_REGEXP)) { if (rb_reg_search(sub, str, pos, 1) >= 0) { VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); - pos = BEG(0); + pos = RMATCH_BEG(match, 0); return LONG2NUM(pos); } } @@ -5915,26 +5911,25 @@ rb_str_subpat_set(VALUE str, VALUE re, VALUE backref, VALUE val) VALUE match; long start, end, len; rb_encoding *enc; - struct re_registers *regs; if (rb_reg_search(re, str, 0, 0) < 0) { rb_raise(rb_eIndexError, "regexp not matched"); } match = rb_backref_get(); nth = rb_reg_backref_number(match, backref); - regs = RMATCH_REGS(match); - if ((nth >= regs->num_regs) || ((nth < 0) && (-nth >= regs->num_regs))) { + int num_regs = RMATCH_NREGS(match); + if ((nth >= num_regs) || ((nth < 0) && (-nth >= num_regs))) { rb_raise(rb_eIndexError, "index %d out of regexp", nth); } if (nth < 0) { - nth += regs->num_regs; + nth += num_regs; } - start = BEG(nth); + start = RMATCH_BEG(match, nth); if (start == -1) { rb_raise(rb_eIndexError, "regexp group %d not matched", nth); } - end = END(nth); + end = RMATCH_END(match, nth); len = end - start; StringValue(val); enc = rb_enc_check_str(str, val); @@ -6069,14 +6064,14 @@ rb_str_slice_bang(int argc, VALUE *argv, VALUE str) if (RB_TYPE_P(indx, T_REGEXP)) { if (rb_reg_search(indx, str, 0, 0) < 0) return Qnil; VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); + int num_regs = RMATCH_NREGS(match); int nth = 0; if (argc > 1 && (nth = rb_reg_backref_number(match, argv[1])) < 0) { - if ((nth += regs->num_regs) <= 0) return Qnil; + if ((nth += num_regs) <= 0) return Qnil; } - else if (nth >= regs->num_regs) return Qnil; - beg = BEG(nth); - len = END(nth) - beg; + else if (nth >= num_regs) return Qnil; + beg = RMATCH_BEG(match, nth); + len = RMATCH_END(match, nth) - beg; goto subseq; } else if (argc == 2) { @@ -9337,18 +9332,16 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) if (result) result = rb_ary_new(); long len = RSTRING_LEN(str); long start = beg; - long idx; + int idx; int last_null = 0; - struct re_registers *regs; VALUE match = 0; for (; rb_reg_search(spat, str, start, 0) >= 0; (match ? (rb_match_unbusy(match), rb_backref_set(match)) : (void)0)) { match = rb_backref_get(); if (!result) rb_match_busy(match); - regs = RMATCH_REGS(match); - end = BEG(0); - if (start == end && BEG(0) == END(0)) { + end = RMATCH_BEG(match, 0); + if (start == end && RMATCH_BEG(match, 0) == RMATCH_END(match, 0)) { if (!ptr) { SPLIT_STR(0, 0); break; @@ -9368,13 +9361,13 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) } else { SPLIT_STR(beg, end-beg); - beg = start = END(0); + beg = start = RMATCH_END(match, 0); } last_null = 0; - for (idx=1; idx < regs->num_regs; idx++) { - if (BEG(idx) == -1) continue; - SPLIT_STR(BEG(idx), END(idx)-BEG(idx)); + for (idx = 1; idx < RMATCH_NREGS(match); idx++) { + if (RMATCH_BEG(match, idx) == -1) continue; + SPLIT_STR(RMATCH_BEG(match, idx), RMATCH_END(match, idx) - RMATCH_BEG(match, idx)); } if (!NIL_P(limit) && lim <= ++i) break; } @@ -11255,10 +11248,9 @@ rb_str_partition(VALUE str, VALUE sep) goto failed; } VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); - pos = BEG(0); - sep = rb_str_subseq(str, pos, END(0) - pos); + pos = RMATCH_BEG(match, 0); + sep = rb_str_subseq(str, pos, RMATCH_END(match, 0) - pos); } else { pos = rb_str_index(str, sep, 0); @@ -11292,10 +11284,9 @@ rb_str_rpartition(VALUE str, VALUE sep) goto failed; } VALUE match = rb_backref_get(); - struct re_registers *regs = RMATCH_REGS(match); - pos = BEG(0); - sep = rb_str_subseq(str, pos, END(0) - pos); + pos = RMATCH_BEG(match, 0); + sep = rb_str_subseq(str, pos, RMATCH_END(match, 0) - pos); } else { pos = rb_str_sublen(str, pos); |
