summaryrefslogtreecommitdiffhomepage
path: root/src/re.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/re.h')
-rw-r--r--src/re.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/re.h b/src/re.h
new file mode 100644
index 000000000..e388f602c
--- /dev/null
+++ b/src/re.h
@@ -0,0 +1,85 @@
+/**********************************************************************
+
+ re.h -
+
+**********************************************************************/
+
+#ifndef RE_H
+#define RE_H
+
+//#include <sys/types.h>
+#include <stdio.h>
+
+#include "node.h"
+#include "regex.h"
+#include "encoding.h"
+
+#define BEG(no) regs->beg[no]
+#define END(no) regs->end[no]
+
+struct rmatch_offset {
+ long beg;
+ long end;
+};
+
+struct rmatch {
+ struct re_registers regs;
+
+ int char_offset_updated;
+ int char_offset_num_allocated;
+ struct rmatch_offset *char_offset;
+};
+
+//struct RMatch {
+// MRUBY_OBJECT_HEADER;
+// mrb_value str;
+// struct re_registers *regs;
+//};
+struct RMatch {
+ MRUBY_OBJECT_HEADER;
+ mrb_value str;
+ struct rmatch *rmatch;
+ mrb_value regexp; /* RRegexp */
+};
+
+struct RRegexp {
+ MRUBY_OBJECT_HEADER;
+ struct re_pattern_buffer *ptr;
+ mrb_value src;
+ unsigned long usecnt;
+};
+
+#define mrb_regex_ptr(r) ((struct RRegexp*)((r).value.p))
+#define RREGEXP(r) ((struct RRegexp*)((r).value.p))
+#define RREGEXP_SRC(r) (RREGEXP(r)->src)
+#define RREGEXP_SRC_PTR(r) (((struct RString*)(RREGEXP_SRC(r).value.p))->buf)
+#define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src)
+int re_adjust_startpos(struct re_pattern_buffer *bufp, const char *string, int size, int startpos, int range);
+
+typedef struct re_pattern_buffer Regexp;
+
+//#define RMATCH(obj) (R_CAST(RMatch)(obj))
+#define RMATCH_REGS(v) (&((struct RMatch*)((v).value.p))->rmatch->regs)
+#define RMATCH(v) ((struct RMatch*)((v).value.p))
+#define mrb_match_ptr(v) ((struct RMatch*)((v).value.p))
+
+int mrb_memcmp(const void *p1, const void *p2, int len);
+
+mrb_int mrb_reg_search (mrb_state *mrb, mrb_value, mrb_value, mrb_int, mrb_int);
+mrb_value mrb_reg_regsub (mrb_state *mrb, mrb_value, mrb_value, struct re_registers *, mrb_value);
+//mrb_value mrb_reg_regsub(mrb_value, mrb_value, struct re_registers *, mrb_value);
+mrb_int mrb_reg_adjust_startpos(mrb_state *mrb, mrb_value re, mrb_value str, mrb_int pos, mrb_int reverse);
+void mrb_match_busy (mrb_value);
+
+mrb_value mrb_reg_quote(mrb_state *mrb, mrb_value str);
+mrb_value mrb_reg_regcomp(mrb_state *mrb, mrb_value str);
+mrb_value mrb_reg_match_str(mrb_state *mrb, mrb_value re, mrb_value str);
+mrb_value mrb_reg_nth_match(mrb_state *mrb, mrb_int nth, mrb_value match);
+mrb_value mrb_backref_get(mrb_state *mrb);
+//mrb_int mrb_memsearch(const void *x0, mrb_int m, const void *y0, mrb_int n);
+mrb_value mrb_reg_to_s(mrb_state *mrb, mrb_value re);
+void mrb_backref_set(mrb_state *mrb, mrb_value val);
+mrb_value match_alloc(mrb_state *mrb);
+int mrb_reg_backref_number(mrb_state *mrb, mrb_value match, mrb_value backref);
+
+#endif