Commit | Line | Data |
---|---|---|
41b16711 AD |
1 | #if defined(PERL_EXT_RE_DEBUG) && !defined(DEBUGGING) |
2 | # define DEBUGGING | |
3 | #endif | |
4 | ||
c5be433b | 5 | #define PERL_NO_GET_CONTEXT |
56953603 IZ |
6 | #include "EXTERN.h" |
7 | #include "perl.h" | |
8 | #include "XSUB.h" | |
9 | ||
97f88e98 JH |
10 | START_EXTERN_C |
11 | ||
cea2e8a9 GS |
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 GS |
14 | char* strbeg, I32 minend, SV* screamer, |
15 | void* data, U32 flags); | |
f722798b IZ |
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 JH |
22 | END_EXTERN_C |
23 | ||
df3728a2 | 24 | #define MY_CXT_KEY "re::_guts" XS_VERSION |
89ca4ac7 JH |
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 GS |
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 IZ |
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 NIS |
53 | PL_regexecp = &my_regexec; |
54 | PL_regcompp = &my_regcomp; | |
f722798b IZ |
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 IZ |
60 | } |
61 | ||
62 | MODULE = re PACKAGE = re | |
63 | ||
89ca4ac7 JH |
64 | BOOT: |
65 | { | |
66 | MY_CXT_INIT; | |
67 | } | |
68 | ||
69 | ||
56953603 IZ |
70 | void |
71 | install() | |
cea2e8a9 GS |
72 | CODE: |
73 | install(aTHX); | |
56953603 IZ |
74 | |
75 | void | |
89ca4ac7 | 76 | uninstall() |
cea2e8a9 | 77 | CODE: |
89ca4ac7 | 78 | uninstall(aTHX); |