X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fre-engine-Plugin.git;a=blobdiff_plain;f=Plugin.h;h=7fc63d43760d11933b9cfc86c38fe6a9aa5c22a9;hp=1b186306215da913554dadf7569bf034c07e3a21;hb=9cd5eb05f2a375deac583160e2f9446e5e552b49;hpb=86e082409eeb8df843893486f92273c0e46d7637 diff --git a/Plugin.h b/Plugin.h index 1b18630..7fc63d4 100644 --- a/Plugin.h +++ b/Plugin.h @@ -14,7 +14,11 @@ START_EXTERN_C EXTERN_C const regexp_engine engine_plugin; -EXTERN_C REGEXP * Plugin_comp(pTHX_ const SV const *, const U32); +#if PERL_VERSION <= 10 +EXTERN_C REGEXP * Plugin_comp(pTHX_ const SV * const, const U32); +#else +EXTERN_C REGEXP * Plugin_comp(pTHX_ SV * const, U32); +#endif EXTERN_C I32 Plugin_exec(pTHX_ REGEXP * const, char *, char *, char *, I32, SV *, void *, U32); EXTERN_C char * Plugin_intuit(pTHX_ REGEXP * const, SV *, char *, @@ -60,9 +64,9 @@ const regexp_engine engine_plugin = { }; typedef struct replug { - /* Pointer back to the containing REGEXP struct so that accessors + /* Pointer back to the containing regexp struct so that accessors * can modify nparens, gofs etc. */ - REGEXP * rx; + struct regexp * rx; /* A copy of the pattern given to comp, for ->pattern */ SV * pattern; @@ -73,10 +77,8 @@ typedef struct replug { /* The ->stash */ SV * stash; - /* - * Callbacks - */ - + /* Callbacks */ + SV * cb_exec; SV * cb_free; /* ->num_captures */ @@ -84,3 +86,11 @@ typedef struct replug { SV * cb_num_capture_buff_STORE; SV * cb_num_capture_buff_LENGTH; } *re__engine__Plugin; + +#if PERL_VERSION >= 11 +# define rxREGEXP(RX) (SvANY(RX)) +# define newREGEXP(RX) ((RX) = ((REGEXP*) newSV_type(SVt_REGEXP))) +#else +# define rxREGEXP(RX) (RX) +# define newREGEXP(RX) (Newxz((RX), 1, struct regexp)) +#endif