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, SSize_t minend, SV* screamer,
21 void* data, U32 flags);
23 extern char* my_re_intuit_start(pTHX_
26 const char * const strbeg,
30 re_scream_pos_data *data);
32 extern SV* my_re_intuit_string (pTHX_ REGEXP * const prog);
34 extern void my_regfree (pTHX_ REGEXP * const r);
36 extern void my_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren,
38 extern void my_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren,
39 SV const * const value);
40 extern I32 my_reg_numbered_buff_length(pTHX_ REGEXP * const rx,
41 const SV * const sv, const I32 paren);
43 extern SV* my_reg_named_buff(pTHX_ REGEXP * const, SV * const, SV * const,
45 extern SV* my_reg_named_buff_iter(pTHX_ REGEXP * const rx,
46 const SV * const lastkey, const U32 flags);
48 extern SV* my_reg_qr_package(pTHX_ REGEXP * const rx);
49 #if defined(USE_ITHREADS)
50 extern void* my_regdupe (pTHX_ REGEXP * const r, CLONE_PARAMS *param);
53 EXTERN_C const struct regexp_engine my_reg_engine;
57 const struct regexp_engine my_reg_engine = {
63 my_reg_numbered_buff_fetch,
64 my_reg_numbered_buff_store,
65 my_reg_numbered_buff_length,
67 my_reg_named_buff_iter,
69 #if defined(USE_ITHREADS)
75 MODULE = re PACKAGE = re
80 PL_colorset = 0; /* Allow reinspection of ENV. */
81 /* PL_debug |= DEBUG_r_FLAG; */
82 XPUSHs(sv_2mortal(newSViv(PTR2IV(&my_reg_engine))));
92 if ((re = SvRX(sv)) /* assign deliberate */
93 /* only for re engines we know about */
94 && (RX_ENGINE(re) == &my_reg_engine
95 || RX_ENGINE(re) == &PL_core_reg_engine))
99 if (RX_ANCHORED_SUBSTR(re)) {
100 an = sv_2mortal(newSVsv(RX_ANCHORED_SUBSTR(re)));
101 } else if (RX_ANCHORED_UTF8(re)) {
102 an = sv_2mortal(newSVsv(RX_ANCHORED_UTF8(re)));
104 if (RX_FLOAT_SUBSTR(re)) {
105 fl = sv_2mortal(newSVsv(RX_FLOAT_SUBSTR(re)));
106 } else if (RX_FLOAT_UTF8(re)) {
107 fl = sv_2mortal(newSVsv(RX_FLOAT_UTF8(re)));