]> git.vpit.fr Git - perl/modules/re-engine-Plugin.git/blob - Plugin.h
Importing re-engine-Plugin-0.04_01.tar.gz
[perl/modules/re-engine-Plugin.git] / Plugin.h
1
2 #define GET_SELF_FROM_PPRIVATE(pprivate)        \
3     re__engine__Plugin self;                    \
4     SELF_FROM_PPRIVATE(self,pprivate);
5
6 /* re__engine__Plugin self; SELF_FROM_PPRIVATE(self,rx->pprivate) */
7 #define SELF_FROM_PPRIVATE(self, pprivate)                   \
8         if (sv_isobject(pprivate)) {                             \
9         SV * ref = SvRV((SV*)pprivate);                      \
10             IV tmp = SvIV((SV*)ref);                             \
11             self = INT2PTR(re__engine__Plugin,tmp);              \
12     } else {                                                 \
13         Perl_croak(aTHX_ "Not an object");                   \
14     }
15
16 START_EXTERN_C
17 EXTERN_C const regexp_engine engine_plugin;
18 EXTERN_C REGEXP * Plugin_comp(pTHX_ const SV const *, const U32);
19 EXTERN_C I32      Plugin_exec(pTHX_ REGEXP * const, char *, char *,
20                               char *, I32, SV *, void *, U32);
21 EXTERN_C char *   Plugin_intuit(pTHX_ REGEXP * const, SV *, char *,
22                                 char *, U32, re_scream_pos_data *);
23 EXTERN_C SV *     Plugin_checkstr(pTHX_ REGEXP * const);
24 EXTERN_C void     Plugin_free(pTHX_ REGEXP * const);
25 EXTERN_C void     Plugin_numbered_buff_FETCH(pTHX_ REGEXP * const,
26                                              const I32, SV * const);
27 EXTERN_C void     Plugin_numbered_buff_STORE(pTHX_ REGEXP * const,
28                                              const I32, SV const * const);
29 EXTERN_C I32      Plugin_numbered_buff_LENGTH(pTHX_ REGEXP * const,
30                                               const SV * const, const I32);
31 EXTERN_C SV *     Plugin_named_buff_FETCH(pTHX_ REGEXP * const, SV * const,
32                                           const U32);
33 EXTERN_C void     Plugin_named_buff_STORE(pTHX_ REGEXP * const rx,
34                                           SV * const key, SV * const value,
35                                           const U32 flags);
36 EXTERN_C void     Plugin_named_buff_DELETE(pTHX_ REGEXP * const rx,
37                                            SV * const key, const U32 flags);
38 EXTERN_C void     Plugin_named_buff_CLEAR (pTHX_ REGEXP * const rx, const U32 flags);
39 EXTERN_C bool     Plugin_named_buff_EXISTS (pTHX_ REGEXP * const rx,
40                                             SV * const key, const U32 flags);
41 EXTERN_C SV *     Plugin_named_buff_FIRSTKEY (pTHX_ REGEXP * const rx,
42                                               const U32 flags);
43 EXTERN_C SV *     Plugin_named_buff_NEXTKEY (pTHX_ REGEXP * const rx,
44                                              SV * const lastkey, const U32 flags);
45 EXTERN_C SV *     Plugin_named_buff_SCALAR (pTHX_ REGEXP * const rx,
46                                             const U32 flags);
47 EXTERN_C SV *     Plugin_package(pTHX_ REGEXP * const);
48 #ifdef USE_ITHREADS
49 EXTERN_C void *   Plugin_dupe(pTHX_ REGEXP * const, CLONE_PARAMS *);
50 #endif
51 END_EXTERN_C
52
53 START_EXTERN_C
54 EXTERN_C const regexp_engine engine_plugin;
55 END_EXTERN_C
56
57 #define RE_ENGINE_PLUGIN (&engine_plugin)
58 const regexp_engine engine_plugin = {
59     Plugin_comp,
60     Plugin_exec,
61     Plugin_intuit,
62     Plugin_checkstr,
63     Plugin_free,
64     Plugin_numbered_buff_FETCH,
65     Plugin_numbered_buff_STORE,
66     Plugin_numbered_buff_LENGTH,
67     Plugin_named_buff_FETCH,
68     Plugin_named_buff_STORE,
69     Plugin_named_buff_DELETE,
70     Plugin_named_buff_CLEAR,
71     Plugin_named_buff_EXISTS,
72     Plugin_named_buff_FIRSTKEY,
73     Plugin_named_buff_NEXTKEY,
74     Plugin_named_buff_SCALAR,
75     Plugin_package,
76 #if defined(USE_ITHREADS)        
77     Plugin_dupe,
78 #endif
79 };
80
81 typedef struct replug {
82     /* Pointer back to the containing REGEXP struct so that accessors
83      * can modify nparens, gofs etc. */
84     REGEXP * rx;
85
86     /* A copy of the pattern given to comp, for ->pattern */
87     SV * pattern;
88
89     /* A copy of the string being matched against, for ->str */
90     SV * str;
91
92     /* The ->stash */
93     SV * stash;
94
95     /*
96      * Callbacks
97      */
98
99     /* ->num_captures */
100     SV * cb_num_capture_buff_FETCH;
101     SV * cb_num_capture_buff_STORE;
102     SV * cb_num_capture_buff_LENGTH;
103
104     /* ->named_captures */
105     SV * cb_named_capture_buff_FETCH;
106     SV * cb_named_capture_buff_STORE;
107     SV * cb_named_capture_buff_DELETE;
108     SV * cb_named_capture_buff_CLEAR;
109     SV * cb_named_capture_buff_EXISTS;
110     SV * cb_named_capture_buff_FIRSTKEY;
111     SV * cb_named_capture_buff_NEXTKEY;
112     SV * cb_named_capture_buff_SCALAR;
113 } *re__engine__Plugin;