1 #if defined(PERL_EXT_RE_DEBUG) && !defined(DEBUGGING)
5 #define PERL_NO_GET_CONTEXT
11 #undef dXSBOOTARGSXSAPIVERCHK
12 /* skip API version checking due to different interp struct size but,
13 this hack is until #123007 is resolved */
14 #define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK
18 extern REGEXP* my_re_compile (pTHX_ SV * const pattern, const U32 pm_flags);
19 extern REGEXP* my_re_op_compile (pTHX_ SV ** const patternp, int pat_count,
20 OP *expr, const regexp_engine* eng, REGEXP *VOL old_re,
21 bool *is_bare_re, U32 rx_flags, U32 pm_flags);
23 extern I32 my_regexec (pTHX_ REGEXP * const prog, char* stringarg, char* strend,
24 char* strbeg, SSize_t minend, SV* screamer,
25 void* data, U32 flags);
27 extern char* my_re_intuit_start(pTHX_
30 const char * const strbeg,
34 re_scream_pos_data *data);
36 extern SV* my_re_intuit_string (pTHX_ REGEXP * const prog);
38 extern void my_regfree (pTHX_ REGEXP * const r);
40 extern void my_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren,
42 extern void my_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren,
43 SV const * const value);
44 extern I32 my_reg_numbered_buff_length(pTHX_ REGEXP * const rx,
45 const SV * const sv, const I32 paren);
47 extern SV* my_reg_named_buff(pTHX_ REGEXP * const, SV * const, SV * const,
49 extern SV* my_reg_named_buff_iter(pTHX_ REGEXP * const rx,
50 const SV * const lastkey, const U32 flags);
52 extern SV* my_reg_qr_package(pTHX_ REGEXP * const rx);
53 #if defined(USE_ITHREADS)
54 extern void* my_regdupe (pTHX_ REGEXP * const r, CLONE_PARAMS *param);
57 EXTERN_C const struct regexp_engine my_reg_engine;
61 const struct regexp_engine my_reg_engine = {
67 my_reg_numbered_buff_fetch,
68 my_reg_numbered_buff_store,
69 my_reg_numbered_buff_length,
71 my_reg_named_buff_iter,
73 #if defined(USE_ITHREADS)
79 MODULE = re PACKAGE = re
84 PL_colorset = 0; /* Allow reinspection of ENV. */
85 /* PL_debug |= DEBUG_r_FLAG; */
86 XPUSHs(sv_2mortal(newSViv(PTR2IV(&my_reg_engine))));
96 if ((re = SvRX(sv)) /* assign deliberate */
97 /* only for re engines we know about */
98 && (RX_ENGINE(re) == &my_reg_engine
99 || RX_ENGINE(re) == &PL_core_reg_engine))
103 if (RX_ANCHORED_SUBSTR(re)) {
104 an = sv_2mortal(newSVsv(RX_ANCHORED_SUBSTR(re)));
105 } else if (RX_ANCHORED_UTF8(re)) {
106 an = sv_2mortal(newSVsv(RX_ANCHORED_UTF8(re)));
108 if (RX_FLOAT_SUBSTR(re)) {
109 fl = sv_2mortal(newSVsv(RX_FLOAT_SUBSTR(re)));
110 } else if (RX_FLOAT_UTF8(re)) {
111 fl = sv_2mortal(newSVsv(RX_FLOAT_UTF8(re)));