Commit | Line | Data |
41b16711 |
1 | #if defined(PERL_EXT_RE_DEBUG) && !defined(DEBUGGING) |
2 | # define DEBUGGING |
3 | #endif |
4 | |
c5be433b |
5 | #define PERL_NO_GET_CONTEXT |
56953603 |
6 | #include "EXTERN.h" |
7 | #include "perl.h" |
8 | #include "XSUB.h" |
9 | |
97f88e98 |
10 | START_EXTERN_C |
11 | |
cea2e8a9 |
12 | extern regexp* my_regcomp (pTHX_ char* exp, char* xend, PMOP* pm); |
13 | extern I32 my_regexec (pTHX_ regexp* prog, char* stringarg, char* strend, |
20ce7b12 |
14 | char* strbeg, I32 minend, SV* screamer, |
15 | void* data, U32 flags); |
f722798b |
16 | extern void my_regfree (pTHX_ struct regexp* r); |
17 | extern char* my_re_intuit_start (pTHX_ regexp *prog, SV *sv, char *strpos, |
18 | char *strend, U32 flags, |
19 | struct re_scream_pos_data_s *data); |
20 | extern SV* my_re_intuit_string (pTHX_ regexp *prog); |
56953603 |
21 | |
97f88e98 |
22 | END_EXTERN_C |
23 | |
df3728a2 |
24 | #define MY_CXT_KEY "re::_guts" XS_VERSION |
89ca4ac7 |
25 | |
26 | typedef struct { |
27 | int x_oldflag; /* debug flag */ |
28 | } my_cxt_t; |
29 | |
30 | START_MY_CXT |
31 | |
32 | #define oldflag (MY_CXT.x_oldflag) |
56953603 |
33 | |
56953603 |
34 | static void |
89ca4ac7 |
35 | uninstall(pTHX) |
56953603 |
36 | { |
89ca4ac7 |
37 | dMY_CXT; |
0b94c7bb |
38 | PL_regexecp = Perl_regexec_flags; |
39 | PL_regcompp = Perl_pregcomp; |
40 | PL_regint_start = Perl_re_intuit_start; |
41 | PL_regint_string = Perl_re_intuit_string; |
42 | PL_regfree = Perl_pregfree; |
f722798b |
43 | |
89ca4ac7 |
44 | if (!oldflag) |
aea4f609 |
45 | PL_debug &= ~DEBUG_r_FLAG; |
56953603 |
46 | } |
47 | |
48 | static void |
cea2e8a9 |
49 | install(pTHX) |
56953603 |
50 | { |
89ca4ac7 |
51 | dMY_CXT; |
285bbc62 |
52 | PL_colorset = 0; /* Allow reinspection of ENV. */ |
3280af22 |
53 | PL_regexecp = &my_regexec; |
54 | PL_regcompp = &my_regcomp; |
f722798b |
55 | PL_regint_start = &my_re_intuit_start; |
56 | PL_regint_string = &my_re_intuit_string; |
57 | PL_regfree = &my_regfree; |
89ca4ac7 |
58 | oldflag = PL_debug & DEBUG_r_FLAG; |
d8981068 |
59 | PL_debug |= DEBUG_r_FLAG; |
56953603 |
60 | } |
61 | |
62 | MODULE = re PACKAGE = re |
63 | |
89ca4ac7 |
64 | BOOT: |
65 | { |
66 | MY_CXT_INIT; |
67 | } |
68 | |
69 | |
56953603 |
70 | void |
71 | install() |
cea2e8a9 |
72 | CODE: |
73 | install(aTHX); |
56953603 |
74 | |
75 | void |
89ca4ac7 |
76 | uninstall() |
cea2e8a9 |
77 | CODE: |
89ca4ac7 |
78 | uninstall(aTHX); |