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 */
82 /* only for re engines we know about */
83 && (RX_ENGINE(re) == &my_reg_engine
84 || RX_ENGINE(re) == &PL_core_reg_engine))
88 if (RX_ANCHORED_SUBSTR(re)) {
89 an = sv_2mortal(newSVsv(RX_ANCHORED_SUBSTR(re)));
90 } else if (RX_ANCHORED_UTF8(re)) {
91 an = sv_2mortal(newSVsv(RX_ANCHORED_UTF8(re)));
93 if (RX_FLOAT_SUBSTR(re)) {
94 fl = sv_2mortal(newSVsv(RX_FLOAT_SUBSTR(re)));
95 } else if (RX_FLOAT_UTF8(re)) {
96 fl = sv_2mortal(newSVsv(RX_FLOAT_UTF8(re)));