This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
De-cargo-cult.
[perl5.git] / ext / re / re.xs
CommitLineData
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
10START_EXTERN_C
11
cea2e8a9
GS
12extern regexp* my_regcomp (pTHX_ char* exp, char* xend, PMOP* pm);
13extern 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
16extern void my_regfree (pTHX_ struct regexp* r);
17extern 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);
20extern SV* my_re_intuit_string (pTHX_ regexp *prog);
56953603 21
97f88e98
JH
22END_EXTERN_C
23
df3728a2 24#define MY_CXT_KEY "re::_guts" XS_VERSION
89ca4ac7
JH
25
26typedef struct {
27 int x_oldflag; /* debug flag */
28} my_cxt_t;
29
30START_MY_CXT
31
32#define oldflag (MY_CXT.x_oldflag)
56953603 33
56953603 34static void
89ca4ac7 35uninstall(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
48static void
cea2e8a9 49install(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
62MODULE = re PACKAGE = re
63
89ca4ac7
JH
64BOOT:
65{
66 MY_CXT_INIT;
67}
68
69
56953603
IZ
70void
71install()
cea2e8a9
GS
72 CODE:
73 install(aTHX);
56953603
IZ
74
75void
89ca4ac7 76uninstall()
cea2e8a9 77 CODE:
89ca4ac7 78 uninstall(aTHX);