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