diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-16 20:08:35 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-16 20:08:35 +0000 |
commit | 71c5e485989cfead51f62f36d0d694cab65f855f (patch) | |
tree | 7d9961457503867eb9acdaf6b7c6786140c89bbb /include/ruby/re.h | |
parent | 5b461c699623240b9b1305d567945ce7ffa297f4 (diff) | |
download | ruby-71c5e485989cfead51f62f36d0d694cab65f855f.tar.gz |
* include/ruby/re.h (struct rmatch_offset): new struct for character
offsets.
(struct rmatch): new struct.
(struct RMatch): reference struct rmatch.
(RMATCH_REGS): new macro.
* re.c (match_alloc): initialize struct rmatch.
(pair_byte_cmp): new function.
(update_char_offset): update character offsets.
(match_init_copy): copy regexp and character offsets.
(match_sublen): removed.
(match_offset): use update_char_offset.
(match_begin): ditto.
(match_end): ditto.
(rb_reg_search): make character offset updated flag false.
(match_size): use RMATCH_REGS.
(match_backref_number): ditto.
(rb_reg_nth_defined): ditto.
(rb_reg_nth_match): ditto.
(rb_reg_match_pre): ditto.
(rb_reg_match_post): ditto.
(rb_reg_match_last): ditto.
(match_array): ditto.
(match_aref): ditto.
(match_values_at): ditto.
(match_inspect): ditto.
* string.c (rb_str_subpat_set): use RMATCH_REGS.
(rb_str_sub_bang): ditto.
(str_gsub): ditto.
(rb_str_split_m): ditto.
(scan_once): ditto.
* gc.c (obj_free): free character offsets.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include/ruby/re.h')
-rw-r--r-- | include/ruby/re.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/include/ruby/re.h b/include/ruby/re.h index 07c08614da..cc7f6025a7 100644 --- a/include/ruby/re.h +++ b/include/ruby/re.h @@ -26,14 +26,28 @@ extern "C" { typedef struct re_pattern_buffer Regexp; +struct rmatch_offset { + int beg; + int end; +}; + +struct rmatch { + struct re_registers regs; + + int char_offset_updated; + int char_offset_num_allocated; + struct rmatch_offset *char_offset; +}; + struct RMatch { struct RBasic basic; VALUE str; - struct re_registers *regs; + struct rmatch *rmatch; VALUE regexp; /* RRegexp */ }; #define RMATCH(obj) (R_CAST(RMatch)(obj)) +#define RMATCH_REGS(obj) (&(R_CAST(RMatch)(obj))->rmatch->regs) VALUE rb_reg_regcomp(VALUE); int rb_reg_search(VALUE, VALUE, int, int); |