summaryrefslogtreecommitdiff
path: root/internal/re.h
diff options
context:
space:
mode:
Diffstat (limited to 'internal/re.h')
-rw-r--r--internal/re.h53
1 files changed, 52 insertions, 1 deletions
diff --git a/internal/re.h b/internal/re.h
index 2788f8b42a..6c0aee6d06 100644
--- a/internal/re.h
+++ b/internal/re.h
@@ -10,19 +10,70 @@
*/
#include "ruby/internal/stdbool.h" /* for bool */
#include "ruby/ruby.h" /* for VALUE */
+#include "ruby/re.h" /* for struct RMatch and struct re_registers */
+
+#define RMATCH_ONIG FL_USER1
+#define RMATCH_OFFSETS_EXTERNAL FL_USER2
+
+static inline OnigPosition *
+RMATCH_BEG_PTR(VALUE match)
+{
+ if (FL_TEST_RAW(match, RMATCH_ONIG)) {
+ return RMATCH(match)->as.onig.beg;
+ }
+ else {
+ return &RMATCH(match)->as.embed[0];
+ }
+}
+
+static inline OnigPosition *
+RMATCH_END_PTR(VALUE match)
+{
+ if (FL_TEST_RAW(match, RMATCH_ONIG)) {
+ return RMATCH(match)->as.onig.end;
+ }
+ else {
+ return &RMATCH(match)->as.embed[RMATCH(match)->num_regs];
+ }
+}
+
+static inline long
+RMATCH_BEG(VALUE match, int i)
+{
+ return RMATCH_BEG_PTR(match)[i];
+}
+
+static inline long
+RMATCH_END(VALUE match, int i)
+{
+ return RMATCH_END_PTR(match)[i];
+}
+
+static inline int
+RMATCH_NREGS(VALUE match)
+{
+ return RMATCH(match)->num_regs;
+}
/* re.c */
+VALUE rb_reg_s_alloc(VALUE klass);
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
VALUE rb_reg_check_preprocess(VALUE);
long rb_reg_search0(VALUE, VALUE, long, int, int, VALUE *);
VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
+VALUE rb_reg_regsub_match(VALUE str, VALUE src, VALUE match);
bool rb_reg_start_with_p(VALUE re, VALUE str);
VALUE rb_reg_hash(VALUE re);
VALUE rb_reg_equal(VALUE re1, VALUE re2);
VALUE rb_backref_set_string(VALUE string, long pos, long len);
void rb_match_unbusy(VALUE);
int rb_match_count(VALUE match);
-VALUE rb_reg_new_ary(VALUE ary, int options);
+VALUE rb_reg_new_from_values(long cnt, const VALUE *elements, int opt);
VALUE rb_reg_last_defined(VALUE match);
+#define ARG_REG_OPTION_MASK \
+ (ONIG_OPTION_IGNORECASE|ONIG_OPTION_MULTILINE|ONIG_OPTION_EXTEND)
+#define ARG_ENCODING_FIXED 16
+#define ARG_ENCODING_NONE 32
+
#endif /* INTERNAL_RE_H */