This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: [PATCH] Add hook for re_dup() into regex engine as reg_dupe (make re pluggable...
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 8460990..2a727e9 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -405,9 +405,7 @@ PERL_CALLCONV void  Perl_do_chop(pTHX_ SV* asv, SV* sv)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
-PERL_CALLCONV bool     Perl_do_close(pTHX_ GV* gv, bool not_implicit)
-                       __attribute__nonnull__(pTHX_1);
-
+PERL_CALLCONV bool     Perl_do_close(pTHX_ GV* gv, bool not_implicit);
 PERL_CALLCONV bool     Perl_do_eof(pTHX_ GV* gv)
                        __attribute__nonnull__(pTHX_1);
 
@@ -1009,7 +1007,7 @@ PERL_CALLCONV bool        Perl_is_utf8_mark(pTHX_ const U8 *p)
 PERL_CALLCONV OP*      Perl_jmaybe(pTHX_ OP* arg)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV I32      Perl_keyword(pTHX_ const char* d, I32 len)
+PERL_CALLCONV I32      Perl_keyword(pTHX_ const char* d, I32 len, bool all_keywords)
                        __attribute__pure__
                        __attribute__nonnull__(pTHX_1);
 
@@ -1835,6 +1833,12 @@ PERL_CALLCONV I32        Perl_pregexec(pTHX_ regexp* prog, char* stringarg, char* stren
                        __attribute__nonnull__(pTHX_6);
 
 PERL_CALLCONV void     Perl_pregfree(pTHX_ struct regexp* r);
+#if defined(USE_ITHREADS)
+PERL_CALLCONV regexp*  Perl_regdupe(pTHX_ const regexp* r, CLONE_PARAMS* param)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+#endif
 PERL_CALLCONV regexp*  Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
@@ -2212,6 +2216,11 @@ PERL_CALLCONV bool       Perl_sv_derived_from(pTHX_ SV* sv, const char* name)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
+PERL_CALLCONV bool     Perl_sv_does(pTHX_ SV* sv, const char* name)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 PERL_CALLCONV I32      Perl_sv_eq(pTHX_ SV* sv1, SV* sv2);
 PERL_CALLCONV void     Perl_sv_free(pTHX_ SV* sv);
 PERL_CALLCONV void     Perl_sv_free2(pTHX_ SV* sv)
@@ -2356,7 +2365,7 @@ PERL_CALLCONV void        Perl_sv_unref_flags(pTHX_ SV* sv, U32 flags)
 PERL_CALLCONV void     Perl_sv_untaint(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV void     Perl_sv_upgrade(pTHX_ SV* sv, U32 mt)
+PERL_CALLCONV void     Perl_sv_upgrade(pTHX_ SV* sv, svtype new_type)
                        __attribute__nonnull__(pTHX_1);
 
 /* PERL_CALLCONV void  Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len)
@@ -2669,6 +2678,14 @@ PERL_CALLCONV char*      Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, S
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
+PERL_CALLCONV char*    Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+PERL_CALLCONV char*    Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 PERL_CALLCONV void     Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...)
                        __attribute__format__(__printf__,pTHX_3,pTHX_4)
                        __attribute__nonnull__(pTHX_2)
@@ -2950,6 +2967,11 @@ STATIC HEK*      S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 
+STATIC SV*     S_hv_magic_uvar_xkey(pTHX_ HV* hv, SV* keysv, int action)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 STATIC void    S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg)
                        __attribute__noreturn__
                        __attribute__nonnull__(pTHX_2)
@@ -3488,6 +3510,10 @@ STATIC I32       S_sortcv_stacked(pTHX_ SV *a, SV *b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
+STATIC void    S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_3);
+
 #endif
 
 #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
@@ -3545,6 +3571,9 @@ STATIC regnode*   S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 dep
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
+STATIC regnode*        S_reg_namedseq(pTHX_ struct RExC_state_t *state, UV *valuep)
+                       __attribute__nonnull__(pTHX_1);
+
 STATIC void    S_reginsert(pTHX_ struct RExC_state_t *state, U8 op, regnode *opnd)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
@@ -3567,9 +3596,10 @@ STATIC char*     S_regwhite(char *p, const char *e)
 STATIC char*   S_nextchar(pTHX_ struct RExC_state_t *state)
                        __attribute__nonnull__(pTHX_1);
 
-STATIC void    S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data)
+STATIC void    S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data, I32 *minlenp)
                        __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
 
 STATIC void    S_cl_anything(const struct RExC_state_t* state, struct regnode_charclass_class *cl)
                        __attribute__nonnull__(1)
@@ -3596,11 +3626,12 @@ STATIC void     S_cl_or(const struct RExC_state_t* state, struct regnode_charclass_c
                        __attribute__nonnull__(2)
                        __attribute__nonnull__(3);
 
-STATIC I32     S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth)
+STATIC I32     S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *minlenp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3)
-                       __attribute__nonnull__(pTHX_4);
+                       __attribute__nonnull__(pTHX_4)
+                       __attribute__nonnull__(pTHX_5);
 
 STATIC I32     S_add_data(struct RExC_state_t* state, I32 n, const char *s)
                        __attribute__warn_unused_result__
@@ -3618,7 +3649,7 @@ STATIC I32        S_regpposixcc(pTHX_ struct RExC_state_t* state, I32 value)
 STATIC void    S_checkposixcc(pTHX_ struct RExC_state_t* state)
                        __attribute__nonnull__(pTHX_1);
 
-STATIC I32     S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 flags, U32 depth)
+STATIC I32     S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3)
@@ -3631,11 +3662,11 @@ STATIC void     S_make_trie_failtable(pTHX_ struct RExC_state_t* state, regnode *sou
                        __attribute__nonnull__(pTHX_3);
 
 #  ifdef DEBUGGING
-STATIC const regnode*  S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, SV* sv, I32 l)
+STATIC const regnode*  S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3)
-                       __attribute__nonnull__(pTHX_5);
+                       __attribute__nonnull__(pTHX_6);
 
 STATIC void    S_put_byte(pTHX_ SV* sv, int c)
                        __attribute__nonnull__(pTHX_1);
@@ -3687,6 +3718,14 @@ STATIC U8*       S_reghop3(U8 *pos, I32 off, const U8 *lim)
                        __attribute__nonnull__(1)
                        __attribute__nonnull__(3);
 
+#ifdef XXX_dmq
+STATIC U8*     S_reghop4(U8 *pos, I32 off, const U8 *llim, const U8 *rlim)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(1)
+                       __attribute__nonnull__(3)
+                       __attribute__nonnull__(4);
+
+#endif
 STATIC U8*     S_reghopmaybe3(U8 *pos, I32 off, const U8 *lim)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(1)
@@ -3706,9 +3745,18 @@ STATIC void      S_to_byte_substr(pTHX_ regexp * prog)
                        __attribute__nonnull__(pTHX_1);
 
 #  ifdef DEBUGGING
-STATIC void    S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const bool do_utf8)
+STATIC void    S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8)
                        __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3)
+                       __attribute__nonnull__(pTHX_4)
+                       __attribute__nonnull__(pTHX_5);
+
+STATIC void    S_debug_start_match(pTHX_ const regexp *prog, const bool do_utf8, const char *start, const char *end, const char *blurb)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_3)
+                       __attribute__nonnull__(pTHX_4)
+                       __attribute__nonnull__(pTHX_5);
 
 #  endif
 #endif
@@ -3845,13 +3893,6 @@ STATIC PTR_TBL_ENT_t *   S_ptr_table_find(PTR_TBL_t *tbl, const void *sv)
                        __attribute__nonnull__(2);
 
 #  endif
-STATIC SV *    S_find_hash_subscript(pTHX_ HV *hv, SV *val)
-                       __attribute__nonnull__(pTHX_2);
-
-STATIC I32     S_find_array_subscript(pTHX_ AV *av, SV *val)
-                       __attribute__nonnull__(pTHX_2);
-
-STATIC SV *    S_find_uninit_var(pTHX_ OP *obase, SV *uninit_sv, bool match);
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
@@ -3991,7 +4032,7 @@ STATIC void       S_printbuf(pTHX_ const char* fmt, const char* s)
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-STATIC bool    S_isa_lookup(pTHX_ HV *stash, const char *name, HV *name_stash, int len, int level)
+STATIC bool    S_isa_lookup(pTHX_ HV *stash, const char *name, const HV * const name_stash, int len, int level)
                        __attribute__nonnull__(pTHX_2);
 
 #endif
@@ -4242,7 +4283,14 @@ PERL_CALLCONV SV*        Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC* mg)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
-#ifdef PERL_IN_SV_C
+
+#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+STATIC SV *    S_find_hash_subscript(pTHX_ HV *hv, SV *val)
+                       __attribute__nonnull__(pTHX_2);
+
+STATIC I32     S_find_array_subscript(pTHX_ AV *av, SV *val)
+                       __attribute__nonnull__(pTHX_2);
+
 STATIC SV*     S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top);
 #endif
 
@@ -4389,6 +4437,14 @@ PERL_CALLCONV void*      Perl_my_cxt_init(pTHX_ int *index, size_t size)
 
 #endif
 
+#ifndef HAS_STRLCAT
+PERL_CALLCONV Size_t   Perl_my_strlcat(char *dst, const char *src, Size_t size);
+#endif
+
+#ifndef HAS_STRLCPY
+PERL_CALLCONV Size_t   Perl_my_strlcpy(char *dst, const char *src, Size_t size);
+#endif
+
 #ifdef PERL_MAD
 PERL_CALLCONV void     Perl_pad_peg(const char* s)
                        __attribute__nonnull__(1);