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 I32 my_regexec (pTHX_ REGEXP * const prog, char* stringarg, char* strend,
16 char* strbeg, I32 minend, SV* screamer,
17 void* data, U32 flags);
19 extern char* my_re_intuit_start (pTHX_ REGEXP * const prog, SV *sv, char *strpos,
20 char *strend, const U32 flags,
21 struct re_scream_pos_data_s *data);
22 extern SV* my_re_intuit_string (pTHX_ REGEXP * const prog);
24 extern void my_regfree (pTHX_ REGEXP * const r);
26 extern void my_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren,
28 extern void my_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren,
29 SV const * const value);
30 extern I32 my_reg_numbered_buff_length(pTHX_ REGEXP * const rx,
31 const SV * const sv, const I32 paren);
33 extern SV* my_reg_named_buff(pTHX_ REGEXP * const, SV * const, SV * const,
35 extern SV* my_reg_named_buff_iter(pTHX_ REGEXP * const rx,
36 const SV * const lastkey, const U32 flags);
38 extern SV* my_reg_qr_package(pTHX_ REGEXP * const rx);
39 #if defined(USE_ITHREADS)
40 extern void* my_regdupe (pTHX_ REGEXP * const r, CLONE_PARAMS *param);
43 EXTERN_C const struct regexp_engine my_reg_engine;
47 const struct regexp_engine my_reg_engine = {
53 my_reg_numbered_buff_fetch,
54 my_reg_numbered_buff_store,
55 my_reg_numbered_buff_length,
57 my_reg_named_buff_iter,
59 #if defined(USE_ITHREADS)
64 MODULE = re PACKAGE = re
69 PL_colorset = 0; /* Allow reinspection of ENV. */
70 /* PL_debug |= DEBUG_r_FLAG; */
71 XPUSHs(sv_2mortal(newSViv(PTR2IV(&my_reg_engine))));
81 if ((re = SvRX(sv))) /* assign deliberate */
85 if (RX_ANCHORED_SUBSTR(re)) {
86 an = newSVsv(RX_ANCHORED_SUBSTR(re));
87 } else if (RX_ANCHORED_UTF8(re)) {
88 an = newSVsv(RX_ANCHORED_UTF8(re));
90 if (RX_FLOAT_SUBSTR(re)) {
91 fl = newSVsv(RX_FLOAT_SUBSTR(re));
92 } else if (RX_FLOAT_UTF8(re)) {
93 fl = newSVsv(RX_FLOAT_UTF8(re));