Introduce a new function, pv_escape(), to display contents of PVs
[p5sagit/p5-mst-13.2.git] / proto.h
diff --git a/proto.h b/proto.h
index 609341f..c595c31 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -441,6 +441,11 @@ PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char* cmd, int fd, int do_report)
 
 #endif
 PERL_CALLCONV void     Perl_do_execfree(pTHX);
+#ifdef PERL_IN_DOIO_C
+STATIC void    S_exec_failed(pTHX_ const char *cmd, int fd, int do_report)
+                       __attribute__nonnull__(pTHX_1);
+
+#endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 PERL_CALLCONV I32      Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp)
                        __attribute__nonnull__(pTHX_2)
@@ -600,7 +605,7 @@ PERL_CALLCONV GV*   Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN le
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2);
 
-PERL_CALLCONV void     Perl_gv_check(pTHX_ HV* stash)
+PERL_CALLCONV void     Perl_gv_check(pTHX_ const HV* stash)
                        __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV void     Perl_gv_efullname(pTHX_ SV* sv, const GV* gv)
@@ -1082,7 +1087,7 @@ PERL_CALLCONV int Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
-PERL_CALLCONV int      Perl_magic_existspack(pTHX_ SV* sv, MAGIC* mg)
+PERL_CALLCONV int      Perl_magic_existspack(pTHX_ SV* sv, const MAGIC* mg)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
@@ -2207,6 +2212,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)
@@ -2351,7 +2361,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)
@@ -2664,6 +2674,10 @@ 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, const char *pv, const STRLEN count, const STRLEN max, 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)
@@ -2945,6 +2959,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)
@@ -3341,10 +3360,10 @@ STATIC char *   S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 
-STATIC char *  S_bytes_to_uni(pTHX_ const U8 *start, STRLEN len, char *dest)
+STATIC char *  S_bytes_to_uni(const U8 *start, STRLEN len, char *dest)
                        __attribute__warn_unused_result__
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_3);
+                       __attribute__nonnull__(1)
+                       __attribute__nonnull__(3);
 
 #endif
 
@@ -3483,6 +3502,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)
@@ -3507,18 +3530,18 @@ STATIC SV *     S_space_join_names_mortal(pTHX_ char *const *array)
 #endif
 
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
-STATIC regnode*        S_reg(pTHX_ struct RExC_state_t *state, I32 paren, I32 *flagp)
+STATIC regnode*        S_reg(pTHX_ struct RExC_state_t *state, I32 paren, I32 *flagp, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
 
 STATIC regnode*        S_reganode(pTHX_ struct RExC_state_t *state, U8 op, U32 arg)
                        __attribute__nonnull__(pTHX_1);
 
-STATIC regnode*        S_regatom(pTHX_ struct RExC_state_t *state, I32 *flagp)
+STATIC regnode*        S_regatom(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
-STATIC regnode*        S_regbranch(pTHX_ struct RExC_state_t *state, I32 *flagp, I32 first)
+STATIC regnode*        S_regbranch(pTHX_ struct RExC_state_t *state, I32 *flagp, I32 first, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
@@ -3526,7 +3549,7 @@ STATIC STRLEN     S_reguni(pTHX_ const struct RExC_state_t *state, UV uv, char *s)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
 
-STATIC regnode*        S_regclass(pTHX_ struct RExC_state_t *state)
+STATIC regnode*        S_regclass(pTHX_ struct RExC_state_t *state, U32 depth)
                        __attribute__nonnull__(pTHX_1);
 
 STATIC I32     S_regcurly(const char *)
@@ -3536,7 +3559,7 @@ STATIC I32        S_regcurly(const char *)
 STATIC regnode*        S_reg_node(pTHX_ struct RExC_state_t *state, U8 op)
                        __attribute__nonnull__(pTHX_1);
 
-STATIC regnode*        S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp)
+STATIC regnode*        S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
@@ -3544,7 +3567,12 @@ STATIC void      S_reginsert(pTHX_ struct RExC_state_t *state, U8 op, regnode *opnd)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
 
-STATIC void    S_regtail(pTHX_ const struct RExC_state_t *state, regnode *p, const regnode *val)
+STATIC void    S_regtail(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
+STATIC U32     S_join_exact(pTHX_ struct RExC_state_t *state, regnode *scan, I32 *min, U32 flags, regnode *val, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
@@ -3557,17 +3585,6 @@ STATIC char*     S_regwhite(char *p, const char *e)
 STATIC char*   S_nextchar(pTHX_ struct RExC_state_t *state)
                        __attribute__nonnull__(pTHX_1);
 
-#  ifdef DEBUGGING
-STATIC const regnode*  S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, SV* sv, I32 l)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2)
-                       __attribute__nonnull__(pTHX_3)
-                       __attribute__nonnull__(pTHX_5);
-
-STATIC void    S_put_byte(pTHX_ SV* sv, int c)
-                       __attribute__nonnull__(pTHX_1);
-
-#  endif
 STATIC void    S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -3619,14 +3636,43 @@ 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)
+STATIC I32     S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 flags, U32 depth)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3)
                        __attribute__nonnull__(pTHX_4)
                        __attribute__nonnull__(pTHX_5);
 
+STATIC void    S_make_trie_failtable(pTHX_ struct RExC_state_t* state, regnode *source, regnode *node, U32 depth)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __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)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3)
+                       __attribute__nonnull__(pTHX_5);
+
+STATIC void    S_put_byte(pTHX_ SV* sv, int c)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC void    S_dump_trie(pTHX_ const struct _reg_trie_data *trie, U32 depth)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC void    S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC void    S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC U8      S_regtail_study(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
+#  endif
 #endif
 
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
@@ -3677,6 +3723,12 @@ STATIC void      S_to_utf8_substr(pTHX_ regexp * prog)
 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)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+#  endif
 #endif
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
@@ -3957,7 +4009,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
@@ -4037,6 +4089,8 @@ PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv)
 
 #endif
 
+PERL_CALLCONV const char *     Perl_PerlIO_context_layers(pTHX_ const char *mode);
+
 #if defined(USE_PERLIO) && !defined(USE_SFIO)
 PERL_CALLCONV int      Perl_PerlIO_close(pTHX_ PerlIO *f);
 PERL_CALLCONV int      Perl_PerlIO_fill(pTHX_ PerlIO *f);
@@ -4336,6 +4390,7 @@ PERL_CALLCONV int Perl_my_sprintf(char *buffer, const char *pat, ...)
 #endif
 
 PERL_CALLCONV int      Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...)
+                       __attribute__format__(__printf__,3,4)
                        __attribute__nonnull__(1)
                        __attribute__nonnull__(3);