Ruby 4.1.0dev (2026-05-22 revision 0a7564be12ab36791d06c91fd88a1d4375e0fb6b)
re.h
1#ifndef INTERNAL_RE_H /*-*-C-*-vi:se ft=c:*/
2#define INTERNAL_RE_H
11#include "ruby/internal/stdbool.h" /* for bool */
12#include "ruby/ruby.h" /* for VALUE */
13#include "ruby/re.h" /* for struct RMatch and struct re_registers */
14
15#define RMATCH_ONIG FL_USER1
16#define RMATCH_OFFSETS_EXTERNAL FL_USER2
17
18static inline OnigPosition *
19RMATCH_BEG_PTR(VALUE match)
20{
21 if (FL_TEST_RAW(match, RMATCH_ONIG)) {
22 return RMATCH(match)->as.onig.beg;
23 }
24 else {
25 return &RMATCH(match)->as.embed[0];
26 }
27}
28
29static inline OnigPosition *
30RMATCH_END_PTR(VALUE match)
31{
32 if (FL_TEST_RAW(match, RMATCH_ONIG)) {
33 return RMATCH(match)->as.onig.end;
34 }
35 else {
36 return &RMATCH(match)->as.embed[RMATCH(match)->num_regs];
37 }
38}
39
40static inline long
41RMATCH_BEG(VALUE match, int i)
42{
43 return RMATCH_BEG_PTR(match)[i];
44}
45
46static inline long
47RMATCH_END(VALUE match, int i)
48{
49 return RMATCH_END_PTR(match)[i];
50}
51
52static inline int
53RMATCH_NREGS(VALUE match)
54{
55 return RMATCH(match)->num_regs;
56}
57
58/* re.c */
59VALUE rb_reg_s_alloc(VALUE klass);
60VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
61VALUE rb_reg_check_preprocess(VALUE);
62long rb_reg_search0(VALUE, VALUE, long, int, int, VALUE *);
63VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
64VALUE rb_reg_regsub_match(VALUE str, VALUE src, VALUE match);
65bool rb_reg_start_with_p(VALUE re, VALUE str);
66VALUE rb_reg_hash(VALUE re);
67VALUE rb_reg_equal(VALUE re1, VALUE re2);
68VALUE rb_backref_set_string(VALUE string, long pos, long len);
69void rb_match_unbusy(VALUE);
70int rb_match_count(VALUE match);
71VALUE rb_reg_new_ary(VALUE ary, int options);
72VALUE rb_reg_last_defined(VALUE match);
73
74#define ARG_REG_OPTION_MASK \
75 (ONIG_OPTION_IGNORECASE|ONIG_OPTION_MULTILINE|ONIG_OPTION_EXTEND)
76#define ARG_ENCODING_FIXED 16
77#define ARG_ENCODING_NONE 32
78
79#endif /* INTERNAL_RE_H */
#define FL_TEST_RAW
Old name of RB_FL_TEST_RAW.
Definition fl_type.h:128
int len
Length of the buffer.
Definition io.h:8
#define RMATCH(obj)
Convenient casting macro.
Definition rmatch.h:37
C99 shim for <stdbool.h>
uintptr_t VALUE
Type that represents a Ruby object.
Definition value.h:40