source: trunk/essentials/dev-lang/perl/ext/re/re.xs

Last change on this file was 3181, checked in by bird, 18 years ago

perl 5.8.8

File size: 1.6 KB
Line 
1#if defined(PERL_EXT_RE_DEBUG) && !defined(DEBUGGING)
2# define DEBUGGING
3#endif
4
5#define PERL_NO_GET_CONTEXT
6#include "EXTERN.h"
7#include "perl.h"
8#include "XSUB.h"
9
10START_EXTERN_C
11
12extern regexp* my_regcomp (pTHX_ char* exp, char* xend, PMOP* pm);
13extern I32 my_regexec (pTHX_ regexp* prog, char* stringarg, char* strend,
14 char* strbeg, I32 minend, SV* screamer,
15 void* data, U32 flags);
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);
21
22END_EXTERN_C
23
24#define MY_CXT_KEY "re::_guts" XS_VERSION
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)
33
34static void
35uninstall(pTHX)
36{
37 dMY_CXT;
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;
43
44 if (!oldflag)
45 PL_debug &= ~DEBUG_r_FLAG;
46}
47
48static void
49install(pTHX)
50{
51 dMY_CXT;
52 PL_colorset = 0; /* Allow reinspection of ENV. */
53 PL_regexecp = &my_regexec;
54 PL_regcompp = &my_regcomp;
55 PL_regint_start = &my_re_intuit_start;
56 PL_regint_string = &my_re_intuit_string;
57 PL_regfree = &my_regfree;
58 oldflag = PL_debug & DEBUG_r_FLAG;
59 PL_debug |= DEBUG_r_FLAG;
60}
61
62MODULE = re PACKAGE = re
63
64BOOT:
65{
66 MY_CXT_INIT;
67}
68
69
70void
71install()
72 CODE:
73 install(aTHX);
74
75void
76uninstall()
77 CODE:
78 uninstall(aTHX);
Note: See TracBrowser for help on using the repository browser.