#define SAVEPVN(p,n) ((p) ? savepvn(p,n) : NULL) START_EXTERN_C EXTERN_C const regexp_engine pcre_engine; EXTERN_C REGEXP * PCRE_comp(pTHX_ const SV const *, const U32); EXTERN_C I32 PCRE_exec(pTHX_ REGEXP * const, char *, char *, char *, I32, SV *, void *, U32); EXTERN_C char * PCRE_intuit(pTHX_ REGEXP * const, SV *, char *, char *, U32, re_scream_pos_data *); EXTERN_C SV * PCRE_checkstr(pTHX_ REGEXP * const); EXTERN_C void PCRE_free(pTHX_ REGEXP * const); /* No numbered/named buff callbacks */ EXTERN_C SV * PCRE_package(pTHX_ REGEXP * const); #ifdef USE_ITHREADS EXTERN_C void * PCRE_dupe(pTHX_ REGEXP * const, CLONE_PARAMS *); #endif END_EXTERN_C void PCRE_make_nametable(regexp * const, pcre * const, const int); const regexp_engine pcre_engine = { PCRE_comp, PCRE_exec, PCRE_intuit, PCRE_checkstr, PCRE_free, Perl_reg_numbered_buff_fetch, Perl_reg_numbered_buff_store, Perl_reg_numbered_buff_length, Perl_reg_named_buff, Perl_reg_named_buff_iter, PCRE_package, #if defined(USE_ITHREADS) PCRE_dupe, #endif };