1 #if defined(PERL_EXT_RE_DEBUG) && !defined(DEBUGGING)
5 #define PERL_NO_GET_CONTEXT
14 extern REGEXP* my_re_compile (pTHX_ SV * const pattern, const U32 pm_flags);
15 extern REGEXP* my_re_op_compile (pTHX_ SV ** const patternp, int pat_count,
16 OP *expr, const regexp_engine* eng, REGEXP *VOL old_re,
17 bool *is_bare_re, U32 rx_flags, U32 pm_flags);
19 extern I32 my_regexec (pTHX_ REGEXP * const prog, char* stringarg, char* strend,
20 char* strbeg, I32 minend, SV* screamer,
21 void* data, U32 flags);
23 extern char* my_re_intuit_start (pTHX_ REGEXP * const prog, SV *sv, char *strpos,
24 char *strend, const U32 flags,
25 struct re_scream_pos_data_s *data);
26 extern SV* my_re_intuit_string (pTHX_ REGEXP * const prog);
28 extern void my_regfree (pTHX_ REGEXP * const r);
30 extern void my_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren,
32 extern void my_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren,
33 SV const * const value);
34 extern I32 my_reg_numbered_buff_length(pTHX_ REGEXP * const rx,
35 const SV * const sv, const I32 paren);
37 extern SV* my_reg_named_buff(pTHX_ REGEXP * const, SV * const, SV * const,
39 extern SV* my_reg_named_buff_iter(pTHX_ REGEXP * const rx,
40 const SV * const lastkey, const U32 flags);
42 extern SV* my_reg_qr_package(pTHX_ REGEXP * const rx);
43 #if defined(USE_ITHREADS)
44 extern void* my_regdupe (pTHX_ REGEXP * const r, CLONE_PARAMS *param);
47 EXTERN_C const struct regexp_engine my_reg_engine;
51 const struct regexp_engine my_reg_engine = {
57 my_reg_numbered_buff_fetch,
58 my_reg_numbered_buff_store,
59 my_reg_numbered_buff_length,
61 my_reg_named_buff_iter,
63 #if defined(USE_ITHREADS)
69 MODULE = re PACKAGE = re
74 PL_colorset = 0; /* Allow reinspection of ENV. */
75 /* PL_debug |= DEBUG_r_FLAG; */
76 XPUSHs(sv_2mortal(newSViv(PTR2IV(&my_reg_engine))));
86 if ((re = SvRX(sv)) /* assign deliberate */
87 /* only for re engines we know about */
88 && (RX_ENGINE(re) == &my_reg_engine
89 || RX_ENGINE(re) == &PL_core_reg_engine))
93 if (RX_ANCHORED_SUBSTR(re)) {
94 an = sv_2mortal(newSVsv(RX_ANCHORED_SUBSTR(re)));
95 } else if (RX_ANCHORED_UTF8(re)) {
96 an = sv_2mortal(newSVsv(RX_ANCHORED_UTF8(re)));
98 if (RX_FLOAT_SUBSTR(re)) {
99 fl = sv_2mortal(newSVsv(RX_FLOAT_SUBSTR(re)));
100 } else if (RX_FLOAT_UTF8(re)) {
101 fl = sv_2mortal(newSVsv(RX_FLOAT_UTF8(re)));