qr_reader-native 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE-mruby.txt +22 -0
- data/LICENSE-spinel.txt +19 -0
- data/LICENSE.txt +21 -0
- data/README.md +61 -0
- data/ext/qr_reader_native/SPINEL_VERSION +1 -0
- data/ext/qr_reader_native/extconf.rb +8 -0
- data/ext/qr_reader_native/mruby/error.h +13 -0
- data/ext/qr_reader_native/mruby/internal.h +145 -0
- data/ext/qr_reader_native/mruby/string.h +22 -0
- data/ext/qr_reader_native/mruby.h +93 -0
- data/ext/qr_reader_native/mruby_shim.h +118 -0
- data/ext/qr_reader_native/qr_reader_native.c +13513 -0
- data/ext/qr_reader_native/qr_reader_native.h +29 -0
- data/ext/qr_reader_native/qr_reader_native_ext.c +598 -0
- data/ext/qr_reader_native/re_cased.h +71 -0
- data/ext/qr_reader_native/re_compile.c +5784 -0
- data/ext/qr_reader_native/re_ctype.h +3540 -0
- data/ext/qr_reader_native/re_exec.c +2190 -0
- data/ext/qr_reader_native/re_internal.h +671 -0
- data/ext/qr_reader_native/re_prop.h +4629 -0
- data/ext/qr_reader_native/re_spinel.c +363 -0
- data/ext/qr_reader_native/re_spinel.h +22 -0
- data/ext/qr_reader_native/re_spinel_utf8.inc +97 -0
- data/ext/qr_reader_native/re_utf8.c +156 -0
- data/ext/qr_reader_native/sp_alloc.c +1447 -0
- data/ext/qr_reader_native/sp_alloc.h +1196 -0
- data/ext/qr_reader_native/sp_argf.h +33 -0
- data/ext/qr_reader_native/sp_array.c +1052 -0
- data/ext/qr_reader_native/sp_array.h +456 -0
- data/ext/qr_reader_native/sp_bigint.c +5826 -0
- data/ext/qr_reader_native/sp_bigint.h +117 -0
- data/ext/qr_reader_native/sp_cold.c +5259 -0
- data/ext/qr_reader_native/sp_compat.h +402 -0
- data/ext/qr_reader_native/sp_core.c +818 -0
- data/ext/qr_reader_native/sp_core.h +56 -0
- data/ext/qr_reader_native/sp_crypto.c +877 -0
- data/ext/qr_reader_native/sp_crypto.h +169 -0
- data/ext/qr_reader_native/sp_dtoa.c +1533 -0
- data/ext/qr_reader_native/sp_dtoa.h +29 -0
- data/ext/qr_reader_native/sp_encoding_names.h +172 -0
- data/ext/qr_reader_native/sp_enum.h +86 -0
- data/ext/qr_reader_native/sp_exc.c +1185 -0
- data/ext/qr_reader_native/sp_exc.h +186 -0
- data/ext/qr_reader_native/sp_exc_ctx.h +56 -0
- data/ext/qr_reader_native/sp_fiber.c +889 -0
- data/ext/qr_reader_native/sp_fiber.h +162 -0
- data/ext/qr_reader_native/sp_fiber_ctx.h +84 -0
- data/ext/qr_reader_native/sp_format.c +695 -0
- data/ext/qr_reader_native/sp_format.h +83 -0
- data/ext/qr_reader_native/sp_gc.c +1793 -0
- data/ext/qr_reader_native/sp_gc.h +762 -0
- data/ext/qr_reader_native/sp_hash.c +131 -0
- data/ext/qr_reader_native/sp_hash.h +131 -0
- data/ext/qr_reader_native/sp_inspect.c +215 -0
- data/ext/qr_reader_native/sp_inspect.h +128 -0
- data/ext/qr_reader_native/sp_io.c +1676 -0
- data/ext/qr_reader_native/sp_io.h +272 -0
- data/ext/qr_reader_native/sp_iobuffer.c +1014 -0
- data/ext/qr_reader_native/sp_iobuffer.h +167 -0
- data/ext/qr_reader_native/sp_marshal.c +487 -0
- data/ext/qr_reader_native/sp_marshal.h +60 -0
- data/ext/qr_reader_native/sp_net.c +1029 -0
- data/ext/qr_reader_native/sp_net.h +205 -0
- data/ext/qr_reader_native/sp_pack.c +1254 -0
- data/ext/qr_reader_native/sp_poly_cold.c +1220 -0
- data/ext/qr_reader_native/sp_proc.c +410 -0
- data/ext/qr_reader_native/sp_proc.h +327 -0
- data/ext/qr_reader_native/sp_process.c +547 -0
- data/ext/qr_reader_native/sp_process_status.c +211 -0
- data/ext/qr_reader_native/sp_process_status.h +66 -0
- data/ext/qr_reader_native/sp_random.c +287 -0
- data/ext/qr_reader_native/sp_random.h +52 -0
- data/ext/qr_reader_native/sp_range.h +144 -0
- data/ext/qr_reader_native/sp_re.c +1379 -0
- data/ext/qr_reader_native/sp_re.h +186 -0
- data/ext/qr_reader_native/sp_re_names.h +59 -0
- data/ext/qr_reader_native/sp_sched.c +4044 -0
- data/ext/qr_reader_native/sp_sched.h +295 -0
- data/ext/qr_reader_native/sp_slab.c +1507 -0
- data/ext/qr_reader_native/sp_str.c +1462 -0
- data/ext/qr_reader_native/sp_str.h +306 -0
- data/ext/qr_reader_native/sp_str_crypt.c +23 -0
- data/ext/qr_reader_native/sp_string.c +92 -0
- data/ext/qr_reader_native/sp_string.h +253 -0
- data/ext/qr_reader_native/sp_system.c +78 -0
- data/ext/qr_reader_native/sp_system.h +18 -0
- data/ext/qr_reader_native/sp_time.c +860 -0
- data/ext/qr_reader_native/sp_time.h +100 -0
- data/ext/qr_reader_native/sp_types.h +292 -0
- data/ext/qr_reader_native/spinel_rt.h +19017 -0
- data/ext/qr_reader_native/unicase.c +399 -0
- data/ext/qr_reader_native/unicase.h +901 -0
- data/lib/qr_reader/native.rb +6 -0
- metadata +153 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
#ifndef SP_RE_H
|
|
2
|
+
#define SP_RE_H
|
|
3
|
+
/* sp_re.h -- regexp wrappers + MatchData, compiled once in lib/sp_re.c.
|
|
4
|
+
*
|
|
5
|
+
* The regexp ENGINE (re_compile / re_exec / re_free) is the separate
|
|
6
|
+
* build/regexp/*.o library; this layer is spinel's Ruby-facing surface
|
|
7
|
+
* (Regexp#match, gsub/sub/scan/split, the $~/$1.. match registers, and
|
|
8
|
+
* MatchData). The match-register globals are per-process singletons: the
|
|
9
|
+
* generated TU reads them directly for $&/$1.. (codegen_expr.c) and marks
|
|
10
|
+
* them in its whole-program GC root hook, so they are extern here and
|
|
11
|
+
* defined once in lib/sp_re.c.
|
|
12
|
+
*
|
|
13
|
+
* Kept in spinel_rt.h (TU-coupled): the whole-program GC root hook
|
|
14
|
+
* sp_re_mark_globals, the startup-error handler (longjmps through a
|
|
15
|
+
* TU-local jmp_buf), and the hash-replacement gsub/sub variants (await
|
|
16
|
+
* the typed-hash batch). */
|
|
17
|
+
#include "sp_array.h" /* sp_StrArray / sp_PolyArray / sp_RbVal + heap */
|
|
18
|
+
#include "sp_str.h" /* string helpers used by the wrappers */
|
|
19
|
+
|
|
20
|
+
/* The engine's internal flag bits. re_internal.h is the port island's own
|
|
21
|
+
header and is not included here, so the three this side reads are named
|
|
22
|
+
again; sp_re_raw_flags() answers a pattern's set. */
|
|
23
|
+
#define SP_RE_F_IGNORECASE 1
|
|
24
|
+
#define SP_RE_F_DOTALL 4 /* Ruby's /m: dot matches newline */
|
|
25
|
+
#define SP_RE_F_EXTENDED 8
|
|
26
|
+
|
|
27
|
+
/* ---- regexp engine ABI (implemented in build/regexp/*.o) ---- */
|
|
28
|
+
typedef struct mrb_regexp_pattern mrb_regexp_pattern;
|
|
29
|
+
mrb_regexp_pattern* re_compile(const char *pattern, int64_t len, uint32_t flags);
|
|
30
|
+
void re_free(mrb_regexp_pattern *pat);
|
|
31
|
+
int re_exec(const mrb_regexp_pattern *pat, const char *str, int64_t len, int64_t start, int *captures, int captures_size, int binary);
|
|
32
|
+
/* named-capture introspection (lib/regexp/re_compile.c) */
|
|
33
|
+
int re_num_named(const mrb_regexp_pattern *pat);
|
|
34
|
+
const char *re_named_name(const mrb_regexp_pattern *pat, int i, int *group_out);
|
|
35
|
+
int re_named_group(const mrb_regexp_pattern *pat, const char *name);
|
|
36
|
+
|
|
37
|
+
/* `caps` holds ncap*2 positions and lives in the SAME block as the struct, so
|
|
38
|
+
a MatchData costs what its match needs rather than what the widest one
|
|
39
|
+
would: it was a fixed caps[64], which is 256 bytes whether the pattern has
|
|
40
|
+
thirty groups or none, and every MatchData paid it. A 1-group match is 40
|
|
41
|
+
bytes now against 280. Nothing takes sizeof() of this outside sp_md_alloc(),
|
|
42
|
+
which is what a flexible array member costs. */
|
|
43
|
+
typedef struct { const char *source; int ncap; const mrb_regexp_pattern *pat; int caps[]; } sp_MatchData;
|
|
44
|
+
|
|
45
|
+
/* ---- match-register state (read by the generated TU and marked by its GC root
|
|
46
|
+
hook). Per-thread in Ruby, so SP_TLS in the threaded build: each worker keeps
|
|
47
|
+
the registers of the green thread it runs. The generated TU is compiled with
|
|
48
|
+
the matching -DSP_THREADS so the storage class agrees. Plain globals
|
|
49
|
+
otherwise. (The GC hook marking only the current worker's registers is
|
|
50
|
+
generalized to all workers when N>1 lands.) ---- */
|
|
51
|
+
extern SP_TLS const char *sp_re_captures[10];
|
|
52
|
+
extern SP_TLS int sp_re_caps[64];
|
|
53
|
+
extern SP_TLS const char *sp_re_last_str;
|
|
54
|
+
extern SP_TLS const mrb_regexp_pattern *sp_re_last_pat;
|
|
55
|
+
extern SP_TLS const char *sp_re_match_str;
|
|
56
|
+
extern SP_TLS const char *sp_re_match_pre;
|
|
57
|
+
extern SP_TLS const char *sp_re_match_post;
|
|
58
|
+
/* Whether the last sub / gsub (regex or string pattern) found a match: the
|
|
59
|
+
bang forms answer nil when NO SUBSTITUTION was made, which is not the same
|
|
60
|
+
as the text being unchanged (`"cats".sub!(/s$/, "s")` matches and answers
|
|
61
|
+
the string). The emitter clears it before the call and reads it after. */
|
|
62
|
+
extern SP_TLS int sp_re_sub_matched;
|
|
63
|
+
const char *sp_re_pre_match(void); /* $` , built on demand */
|
|
64
|
+
const char *sp_re_post_match(void); /* $' , built on demand */
|
|
65
|
+
extern const char *sp_re_startup_err;
|
|
66
|
+
|
|
67
|
+
/* Stop-the-world support: push this worker's live match-register strings as GC
|
|
68
|
+
roots (for the collector to mark while the worker is parked). See sp_re.c. */
|
|
69
|
+
void sp_re_push_match_roots(void);
|
|
70
|
+
|
|
71
|
+
/* ---- wrappers (lib/sp_re.c) ---- */
|
|
72
|
+
const char *sp_re_last_paren_match(void);
|
|
73
|
+
void sp_re_set_captures(const char *str, int *caps, int ncaps);
|
|
74
|
+
extern int sp_re_track_last; /* gsub / sub / scan record `$~` (sp_re.c) */
|
|
75
|
+
void sp_re_clear_last_match(void);
|
|
76
|
+
void sp_re_set_last_match(const mrb_regexp_pattern *pat, const char *str, const int *caps, int n);
|
|
77
|
+
void sp_re_set_lit_match(const char *str, sp_int beg, sp_int end);
|
|
78
|
+
sp_int sp_re_match(mrb_regexp_pattern *pat, const char *str);
|
|
79
|
+
sp_int sp_re_match_at(mrb_regexp_pattern *pat, const char *str, sp_int pos);
|
|
80
|
+
sp_int sp_re_match_next(mrb_regexp_pattern *pat, const char *str, sp_int pos);
|
|
81
|
+
sp_int sp_re_rindex(mrb_regexp_pattern *pat, const char *str);
|
|
82
|
+
sp_StrArray *sp_re_rpartition(mrb_regexp_pattern *pat, const char *str);
|
|
83
|
+
sp_bool sp_re_match_p(mrb_regexp_pattern *pat, const char *str);
|
|
84
|
+
sp_bool sp_re_match_p_at(mrb_regexp_pattern *pat, const char *str, sp_int pos);
|
|
85
|
+
sp_bool sp_re_case_eq(mrb_regexp_pattern *pat, sp_RbVal v);
|
|
86
|
+
/* poly-operand match forms: either side may carry the pattern (#3961) */
|
|
87
|
+
mrb_regexp_pattern *sp_poly_as_pattern(sp_RbVal v);
|
|
88
|
+
sp_bool sp_poly_match_p(sp_RbVal a, sp_RbVal b);
|
|
89
|
+
sp_bool sp_poly_match_p_at(sp_RbVal a, sp_RbVal b, sp_int pos);
|
|
90
|
+
sp_MatchData *sp_poly_match_data(sp_RbVal a, sp_RbVal b);
|
|
91
|
+
sp_int sp_poly_match_index(sp_RbVal a, sp_RbVal b);
|
|
92
|
+
void sp_re_expand_rep(const mrb_regexp_pattern *pat, char **out_io, size_t *olen_io, size_t *cap_io, const char *rep, size_t rlen, const char *src, int *caps, int ncaps);
|
|
93
|
+
const char *sp_re_gsub(mrb_regexp_pattern *pat, const char *str, const char *rep);
|
|
94
|
+
const char *sp_re_sub(mrb_regexp_pattern *pat, const char *str, const char *rep);
|
|
95
|
+
sp_StrArray *sp_re_scan(mrb_regexp_pattern *pat, const char *str);
|
|
96
|
+
sp_StrArray *sp_re_split(mrb_regexp_pattern *pat, const char *str);
|
|
97
|
+
sp_StrArray *sp_re_split_limit(mrb_regexp_pattern *pat, const char *str, sp_int limit);
|
|
98
|
+
sp_int sp_re_rindex_opt(mrb_regexp_pattern *pat, const char *str);
|
|
99
|
+
sp_RbVal sp_re_rindex_poly(mrb_regexp_pattern *pat, const char *str);
|
|
100
|
+
sp_RbVal sp_re_index_poly(mrb_regexp_pattern *pat, const char *str);
|
|
101
|
+
const char *sp_str_splice_re(mrb_regexp_pattern *pat, const char *s, const char *val);
|
|
102
|
+
const char *sp_str_slice_re(mrb_regexp_pattern *pat, const char *s, const char **rest_out);
|
|
103
|
+
const char *sp_re_alt_join(const char *a, const char *b); /* `a|b`, NUL-safe */
|
|
104
|
+
const char *sp_re_source(void *pat);
|
|
105
|
+
uint32_t sp_re_source_len(void *pat); /* its byte length (may hold a NUL) */
|
|
106
|
+
sp_bool sp_re_src_linear_time(const char *src); /* Regexp.linear_time? on a source string */
|
|
107
|
+
const char *sp_re_inspect_str(void *pat);
|
|
108
|
+
const char *sp_re_to_s_str(void *pat);
|
|
109
|
+
sp_int sp_re_options(void *pat);
|
|
110
|
+
sp_int sp_re_hash(void *pat);
|
|
111
|
+
sp_bool sp_re_eq(void *a, void *b);
|
|
112
|
+
sp_bool sp_re_casefold_p(void *pat);
|
|
113
|
+
uint32_t sp_re_raw_flags(void *pat);
|
|
114
|
+
uint32_t sp_re_opts_to_flags(sp_int o);
|
|
115
|
+
const char *sp_MatchData_inspect(sp_MatchData *m);
|
|
116
|
+
const char *re_group_name(const mrb_regexp_pattern *pat, int group);
|
|
117
|
+
sp_int sp_re_index_from_opt(mrb_regexp_pattern *pat, const char *str, sp_int start);
|
|
118
|
+
sp_int sp_re_byteindex_opt(mrb_regexp_pattern *pat, const char *str, sp_int start);
|
|
119
|
+
sp_int sp_re_byterindex_opt(mrb_regexp_pattern *pat, const char *str, sp_int start);
|
|
120
|
+
sp_int sp_re_rindex_from_opt(mrb_regexp_pattern *pat, const char *str, sp_int start);
|
|
121
|
+
sp_RbVal sp_re_match_poly(mrb_regexp_pattern *pat, const char *str);
|
|
122
|
+
const char *sp_re_named_capture(const mrb_regexp_pattern *pat, const char *name);
|
|
123
|
+
const char *sp_re_escape(const char *src);
|
|
124
|
+
mrb_regexp_pattern *sp_re_union_array(sp_PolyArray *a);
|
|
125
|
+
sp_PolyArray *sp_re_scan_poly(mrb_regexp_pattern *pat, const char *str);
|
|
126
|
+
sp_PolyArray *sp_re_match_data(mrb_regexp_pattern *pat, const char *str);
|
|
127
|
+
void sp_MatchData_scan(void *p);
|
|
128
|
+
sp_MatchData *sp_re_matchdata(mrb_regexp_pattern *pat, const char *str);
|
|
129
|
+
sp_MatchData *sp_re_last_matchdata(void); /* $~ from the TLS match registers */
|
|
130
|
+
/* Saved match registers of one method frame: `$~` is frame-local in Ruby, so a
|
|
131
|
+
method that performs a match restores its caller's on the way out (#3629).
|
|
132
|
+
The emitter declares one with a cleanup attribute, so every ordinary exit
|
|
133
|
+
path -- including an early `return` -- puts the caller's registers back. */
|
|
134
|
+
typedef struct {
|
|
135
|
+
const char *captures[10];
|
|
136
|
+
int caps[64];
|
|
137
|
+
const char *last_str, *match_str, *match_pre, *match_post;
|
|
138
|
+
int last_ncap;
|
|
139
|
+
const mrb_regexp_pattern *last_pat;
|
|
140
|
+
int last_lit;
|
|
141
|
+
int pp_span[2];
|
|
142
|
+
} sp_re_frame;
|
|
143
|
+
void sp_re_frame_push(sp_re_frame *f);
|
|
144
|
+
void sp_re_frame_pop(sp_re_frame *f);
|
|
145
|
+
sp_MatchData *sp_re_matchdata_at(mrb_regexp_pattern *pat, const char *str, sp_int cpos);
|
|
146
|
+
const char *sp_MatchData_aref(sp_MatchData *m, sp_int i);
|
|
147
|
+
const char *sp_MatchData_aref_name(sp_MatchData *m, const char *name);
|
|
148
|
+
sp_StrArray *sp_MatchData_names(sp_MatchData *m);
|
|
149
|
+
const char *sp_MatchData_string(sp_MatchData *m);
|
|
150
|
+
sp_StrArray *sp_Regexp_names(const mrb_regexp_pattern *pat);
|
|
151
|
+
/* named-group metadata (lib/regexp/re_compile.c), for the generated TU's
|
|
152
|
+
inline Regexp#named_captures construction */
|
|
153
|
+
int re_num_named(const mrb_regexp_pattern *pat);
|
|
154
|
+
const char *re_named_name(const mrb_regexp_pattern *pat, int i, int *group_out);
|
|
155
|
+
sp_int sp_MatchData_length(sp_MatchData *m);
|
|
156
|
+
sp_bool sp_MatchData_eq(sp_MatchData *a, sp_MatchData *b);
|
|
157
|
+
sp_int sp_MatchData_hash(sp_MatchData *m);
|
|
158
|
+
sp_PolyArray *sp_MatchData_aref_len(sp_MatchData *m, sp_int start, sp_int len);
|
|
159
|
+
sp_PolyArray *sp_MatchData_aref_range(sp_MatchData *m, sp_int beg, sp_int end, int excl);
|
|
160
|
+
sp_int sp_md_char_off(sp_MatchData *m, int byteoff);
|
|
161
|
+
sp_int sp_MatchData_begin(sp_MatchData *m, sp_int i);
|
|
162
|
+
sp_int sp_MatchData_end(sp_MatchData *m, sp_int i);
|
|
163
|
+
sp_IntArray *sp_MatchData_offset(sp_MatchData *m, sp_int i);
|
|
164
|
+
sp_int sp_MatchData_bytebegin(sp_MatchData *m, sp_int i);
|
|
165
|
+
sp_int sp_MatchData_byteend(sp_MatchData *m, sp_int i);
|
|
166
|
+
sp_IntArray *sp_MatchData_byteoffset(sp_MatchData *m, sp_int i);
|
|
167
|
+
sp_int sp_MatchData_begin_name(sp_MatchData *m, const char *name);
|
|
168
|
+
sp_int sp_MatchData_end_name(sp_MatchData *m, const char *name);
|
|
169
|
+
sp_IntArray *sp_MatchData_offset_name(sp_MatchData *m, const char *name);
|
|
170
|
+
sp_int sp_MatchData_bytebegin_name(sp_MatchData *m, const char *name);
|
|
171
|
+
sp_int sp_MatchData_byteend_name(sp_MatchData *m, const char *name);
|
|
172
|
+
sp_IntArray *sp_MatchData_byteoffset_name(sp_MatchData *m, const char *name);
|
|
173
|
+
const char *sp_MatchData_to_s(sp_MatchData *m);
|
|
174
|
+
sp_PolyArray *sp_MatchData_captures(sp_MatchData *m);
|
|
175
|
+
sp_PolyArray *sp_MatchData_to_a(sp_MatchData *m);
|
|
176
|
+
const char *sp_MatchData_pre_match(sp_MatchData *m);
|
|
177
|
+
const char *sp_MatchData_post_match(sp_MatchData *m);
|
|
178
|
+
void sp_re_default_error_handler(const char *msg);
|
|
179
|
+
|
|
180
|
+
/* ---- sp_str_re_match_p_at relocated from spinel_rt.h (0 optcarrot uses).
|
|
181
|
+
Lives here (not sp_str.h) because spinel_rt.h includes sp_re.h before
|
|
182
|
+
sp_str.h -- placing it in sp_str.h would see mrb_regexp_pattern
|
|
183
|
+
undeclared on that first (nested) pass. ---- */
|
|
184
|
+
sp_bool sp_str_re_match_p_at(mrb_regexp_pattern *pat, const char *str, sp_int cpos);
|
|
185
|
+
|
|
186
|
+
#endif /* SP_RE_H */
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** shim/sp_re_names.h - link names for the mrb_ functions the engine defines
|
|
3
|
+
**
|
|
4
|
+
** The engine calls mruby's C API. re_spinel.c implements that API with
|
|
5
|
+
** the C library, and its source spells each function with mruby's name.
|
|
6
|
+
** A program that links real mruby as well as the spinel runtime must not
|
|
7
|
+
** see two definitions of one name.
|
|
8
|
+
** The engine files define more mrb_ functions of their own. This header
|
|
9
|
+
** gives each mrb_ function that the engine objects define an sp_re_ prefix.
|
|
10
|
+
** The copied mruby files stay unchanged, because every engine file
|
|
11
|
+
** includes shim/mruby.h, and so this header, before it uses an mrb_ name.
|
|
12
|
+
** Types (mrb_int, mrb_value, mrb_state, mrb_regexp_pattern) are not link
|
|
13
|
+
** symbols, so they keep their names.
|
|
14
|
+
*/
|
|
15
|
+
#ifndef SP_RE_SHIM_NAMES_H
|
|
16
|
+
#define SP_RE_SHIM_NAMES_H
|
|
17
|
+
|
|
18
|
+
#define mrb_calloc sp_re_mrb_calloc
|
|
19
|
+
#define mrb_exc_get_id sp_re_mrb_exc_get_id
|
|
20
|
+
#define mrb_exc_new_str sp_re_mrb_exc_new_str
|
|
21
|
+
#define mrb_exc_raise sp_re_mrb_exc_raise
|
|
22
|
+
#define mrb_format sp_re_mrb_format
|
|
23
|
+
#define mrb_free sp_re_mrb_free
|
|
24
|
+
#define mrb_malloc sp_re_mrb_malloc
|
|
25
|
+
#define mrb_malloc_simple sp_re_mrb_malloc_simple
|
|
26
|
+
#define mrb_re_case_fold sp_re_mrb_re_case_fold
|
|
27
|
+
#define mrb_re_class_ctype_match sp_re_mrb_re_class_ctype_match
|
|
28
|
+
#define mrb_re_compile sp_re_mrb_re_compile
|
|
29
|
+
#define mrb_re_ctype sp_re_mrb_re_ctype
|
|
30
|
+
#define mrb_re_ctype_span sp_re_mrb_re_ctype_span
|
|
31
|
+
#define mrb_re_exec sp_re_mrb_re_exec
|
|
32
|
+
#define mrb_re_flags_cat sp_re_mrb_re_flags_cat
|
|
33
|
+
#define mrb_re_free sp_re_mrb_re_free
|
|
34
|
+
#define mrb_re_is_word_char sp_re_mrb_re_is_word_char
|
|
35
|
+
/* This name is a function only in the RE_NO_UNICODE_* build (the
|
|
36
|
+
conditions shim/mruby.h turns into MRB_USE_ASCII_CTYPE); in the default
|
|
37
|
+
build re_internal.h defines it as a macro, which this one would clash with. */
|
|
38
|
+
#if defined(MRB_USE_ASCII_CTYPE) || defined(RE_NO_UNICODE_CASE) || defined(RE_NO_UNICODE_CTYPE)
|
|
39
|
+
#define mrb_re_needs_case_data sp_re_mrb_re_needs_case_data
|
|
40
|
+
#endif
|
|
41
|
+
#define mrb_re_rexec sp_re_mrb_re_rexec
|
|
42
|
+
#define mrb_realloc sp_re_mrb_realloc
|
|
43
|
+
#define mrb_realloc_simple sp_re_mrb_realloc_simple
|
|
44
|
+
#define mrb_str_cat sp_re_mrb_str_cat
|
|
45
|
+
#define mrb_str_new sp_re_mrb_str_new
|
|
46
|
+
#define mrb_str_new_cstr sp_re_mrb_str_new_cstr
|
|
47
|
+
#define mrb_str_resize sp_re_mrb_str_resize
|
|
48
|
+
#define mrb_temp_alloc sp_re_mrb_temp_alloc
|
|
49
|
+
#define mrb_uni_case_fold sp_re_mrb_uni_case_fold
|
|
50
|
+
#define mrb_uni_case_fold_range sp_re_mrb_uni_case_fold_range
|
|
51
|
+
#define mrb_uni_case_map sp_re_mrb_uni_case_map
|
|
52
|
+
#define mrb_uni_case_unfold sp_re_mrb_uni_case_unfold
|
|
53
|
+
#define mrb_uni_case_unfold_range sp_re_mrb_uni_case_unfold_range
|
|
54
|
+
#define mrb_utf8_char_head sp_re_mrb_utf8_char_head
|
|
55
|
+
#define mrb_utf8_decode sp_re_mrb_utf8_decode
|
|
56
|
+
#define mrb_utf8_to_buf sp_re_mrb_utf8_to_buf
|
|
57
|
+
#define mrb_utf8len sp_re_mrb_utf8len
|
|
58
|
+
|
|
59
|
+
#endif
|