This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
remove binary compat from #23156 (remove PL_retstack)
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 54882c1..5d27377 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -2,7 +2,7 @@
  *    proto.h
  *
  *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- *    2000, 2001, 2002, 2003, by Larry Wall and others
+ *    2000, 2001, 2002, 2003, 2004, by Larry Wall and others
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -316,6 +316,7 @@ PERL_CALLCONV bool  Perl_is_uni_punct_lc(pTHX_ UV c);
 PERL_CALLCONV bool     Perl_is_uni_xdigit_lc(pTHX_ UV c);
 PERL_CALLCONV STRLEN   Perl_is_utf8_char(pTHX_ U8 *p);
 PERL_CALLCONV bool     Perl_is_utf8_string(pTHX_ U8 *s, STRLEN len);
+PERL_CALLCONV bool     Perl_is_utf8_string_loc(pTHX_ U8 *s, STRLEN len, U8 **p);
 PERL_CALLCONV bool     Perl_is_utf8_alnum(pTHX_ U8 *p);
 PERL_CALLCONV bool     Perl_is_utf8_alnumc(pTHX_ U8 *p);
 PERL_CALLCONV bool     Perl_is_utf8_idfirst(pTHX_ U8 *p);
@@ -513,10 +514,11 @@ PERL_CALLCONV OP* Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I
 
 PERL_CALLCONV PERL_SI* Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems);
 PERL_CALLCONV char*    Perl_scan_vstring(pTHX_ char *vstr, SV *sv);
-PERL_CALLCONV char*    Perl_scan_version(pTHX_ char *vstr, SV *sv);
+PERL_CALLCONV char*    Perl_scan_version(pTHX_ char *vstr, SV *sv, bool qv);
 PERL_CALLCONV SV*      Perl_new_version(pTHX_ SV *ver);
 PERL_CALLCONV SV*      Perl_upg_version(pTHX_ SV *ver);
 PERL_CALLCONV SV*      Perl_vnumify(pTHX_ SV *vs);
+PERL_CALLCONV SV*      Perl_vnormal(pTHX_ SV *vs);
 PERL_CALLCONV SV*      Perl_vstringify(pTHX_ SV *vs);
 PERL_CALLCONV int      Perl_vcmp(pTHX_ SV *lvs, SV *rvs);
 PERL_CALLCONV PerlIO*  Perl_nextargv(pTHX_ GV* gv);
@@ -527,6 +529,7 @@ PERL_CALLCONV void  Perl_package(pTHX_ OP* o);
 PERL_CALLCONV PADOFFSET        Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
 PERL_CALLCONV PADOFFSET        Perl_allocmy(pTHX_ char* name);
 PERL_CALLCONV PADOFFSET        Perl_pad_findmy(pTHX_ char* name);
+PERL_CALLCONV PADOFFSET        Perl_find_rundefsvoffset(pTHX);
 PERL_CALLCONV OP*      Perl_oopsAV(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_oopsHV(pTHX_ OP* o);
 PERL_CALLCONV void     Perl_pad_leavemy(pTHX);
@@ -569,10 +572,8 @@ PERL_CALLCONV void Perl_pidgone(pTHX_ Pid_t pid, int status);
 PERL_CALLCONV void     Perl_pmflag(pTHX_ U32* pmfl, int ch);
 PERL_CALLCONV OP*      Perl_pmruntime(pTHX_ OP* pm, OP* expr, OP* repl);
 PERL_CALLCONV OP*      Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
-PERL_CALLCONV OP*      Perl_pop_return(pTHX);
 PERL_CALLCONV void     Perl_pop_scope(pTHX);
 PERL_CALLCONV OP*      Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail);
-PERL_CALLCONV void     Perl_push_return(pTHX_ OP* o);
 PERL_CALLCONV void     Perl_push_scope(pTHX);
 PERL_CALLCONV OP*      Perl_ref(pTHX_ OP* o, I32 type);
 PERL_CALLCONV OP*      Perl_refkids(pTHX_ OP* o, I32 type);
@@ -659,20 +660,23 @@ PERL_CALLCONV I32 Perl_setenv_getix(pTHX_ char* nam);
 PERL_CALLCONV void     Perl_setdefout(pTHX_ GV* gv);
 PERL_CALLCONV HEK*     Perl_share_hek(pTHX_ const char* sv, I32 len, U32 hash);
 PERL_CALLCONV Signal_t Perl_sighandler(int sig);
+PERL_CALLCONV Signal_t Perl_csighandler(int sig);
 PERL_CALLCONV SV**     Perl_stack_grow(pTHX_ SV** sp, SV**p, int n);
 PERL_CALLCONV I32      Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
 PERL_CALLCONV void     Perl_sub_crush_depth(pTHX_ CV* cv);
 PERL_CALLCONV bool     Perl_sv_2bool(pTHX_ SV* sv);
 PERL_CALLCONV CV*      Perl_sv_2cv(pTHX_ SV* sv, HV** st, GV** gvp, I32 lref);
 PERL_CALLCONV IO*      Perl_sv_2io(pTHX_ SV* sv);
-PERL_CALLCONV IV       Perl_sv_2iv(pTHX_ SV* sv);
+/* PERL_CALLCONV IV    sv_2iv(pTHX_ SV* sv); */
+PERL_CALLCONV IV       Perl_sv_2iv_flags(pTHX_ SV* sv, I32 flags);
 PERL_CALLCONV SV*      Perl_sv_2mortal(pTHX_ SV* sv);
 PERL_CALLCONV NV       Perl_sv_2nv(pTHX_ SV* sv);
 /* PERL_CALLCONV char* sv_2pv(pTHX_ SV* sv, STRLEN* lp); */
 PERL_CALLCONV char*    Perl_sv_2pvutf8(pTHX_ SV* sv, STRLEN* lp);
 PERL_CALLCONV char*    Perl_sv_2pvbyte(pTHX_ SV* sv, STRLEN* lp);
 PERL_CALLCONV char*    Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp);
-PERL_CALLCONV UV       Perl_sv_2uv(pTHX_ SV* sv);
+/* PERL_CALLCONV UV    sv_2uv(pTHX_ SV* sv); */
+PERL_CALLCONV UV       Perl_sv_2uv_flags(pTHX_ SV* sv, I32 flags);
 PERL_CALLCONV IV       Perl_sv_iv(pTHX_ SV* sv);
 PERL_CALLCONV UV       Perl_sv_uv(pTHX_ SV* sv);
 PERL_CALLCONV NV       Perl_sv_nv(pTHX_ SV* sv);
@@ -798,8 +802,9 @@ PERL_CALLCONV void  Perl_vivify_ref(pTHX_ SV* sv, U32 to_what);
 PERL_CALLCONV I32      Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags);
 PERL_CALLCONV U32      Perl_parse_unicode_opts(pTHX_ char **popt);
 PERL_CALLCONV U32      Perl_seed(pTHX);
+PERL_CALLCONV UV       Perl_get_hash_seed(pTHX);
 PERL_CALLCONV void     Perl_report_evil_fh(pTHX_ GV *gv, IO *io, I32 op);
-PERL_CALLCONV void     Perl_report_uninit(pTHX);
+PERL_CALLCONV void     Perl_report_uninit(pTHX_ SV* uninit_sv);
 PERL_CALLCONV void     Perl_warn(pTHX_ const char* pat, ...)
        __attribute__format__(__printf__,pTHX_1,pTHX_2);
 PERL_CALLCONV void     Perl_vwarn(pTHX_ const char* pat, va_list* args);
@@ -810,9 +815,6 @@ PERL_CALLCONV void  Perl_watch(pTHX_ char** addr);
 PERL_CALLCONV I32      Perl_whichsig(pTHX_ char* sig);
 PERL_CALLCONV void     Perl_write_to_stderr(pTHX_ const char* message, int msglen);
 PERL_CALLCONV int      Perl_yyerror(pTHX_ char* s);
-#ifdef USE_PURE_BISON
-PERL_CALLCONV int      Perl_yylex_r(pTHX_ YYSTYPE *lvalp, int *lcharp);
-#endif
 PERL_CALLCONV int      Perl_yylex(pTHX);
 PERL_CALLCONV int      Perl_yyparse(pTHX);
 PERL_CALLCONV int      Perl_yywarn(pTHX_ char* s);
@@ -949,7 +951,6 @@ STATIC HEK* S_save_hek_flags(pTHX_ const char *str, I32 len, U32 hash, int flags
 STATIC void    S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store);
 STATIC void    S_unshare_hek_or_pvn(pTHX_ HEK* hek, const char* sv, I32 len, U32 hash);
 STATIC HEK*    S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags);
-STATIC SV**    S_hv_fetch_flags(pTHX_ HV* tb, const char* key, I32 klen, I32 lval, int flags);
 STATIC void    S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg);
 #endif
 
@@ -979,10 +980,10 @@ STATIC OP *       S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp);
 STATIC OP *    S_dup_attrlist(pTHX_ OP *o);
 STATIC void    S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my);
 STATIC void    S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp);
-#  if defined(PL_OP_SLAB_ALLOC)
-STATIC void*   S_Slab_Alloc(pTHX_ int m, size_t sz);
-STATIC void    S_Slab_Free(pTHX_ void *op);
-#  endif
+#endif
+#if defined(PL_OP_SLAB_ALLOC)
+PERL_CALLCONV void*    Perl_Slab_Alloc(pTHX_ int m, size_t sz);
+PERL_CALLCONV void     Perl_Slab_Free(pTHX_ void *op);
 #endif
 
 #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
@@ -998,9 +999,9 @@ STATIC void S_init_postdump_symbols(pTHX_ int, char **, char **);
 STATIC void    S_init_predump_symbols(pTHX);
 STATIC void    S_my_exit_jump(pTHX) __attribute__((noreturn));
 STATIC void    S_nuke_stacks(pTHX);
-STATIC void    S_open_script(pTHX_ char *, bool, SV *, int *fd);
+STATIC void    S_open_script(pTHX_ char *, bool, SV *);
 STATIC void    S_usage(pTHX_ char *);
-STATIC void    S_validate_suid(pTHX_ char *, char*, int);
+STATIC void    S_validate_suid(pTHX_ char *, char*);
 #  if defined(IAMSUID)
 STATIC int     S_fd_on_nosuid_fs(pTHX_ int fd);
 #  endif
@@ -1040,7 +1041,8 @@ STATIC void*      S_docatch_body(pTHX);
 STATIC void*   S_vdocatch_body(pTHX_ va_list args);
 #endif
 STATIC OP*     S_dofindlabel(pTHX_ OP *o, char *label, OP **opstack, OP **oplimit);
-STATIC void    S_doparseform(pTHX_ SV *sv);
+STATIC OP*     S_doparseform(pTHX_ SV *sv);
+STATIC bool    S_num_overflow(NV value, I32 fldsize, I32 frcsize);
 STATIC I32     S_dopoptoeval(pTHX_ I32 startingblock);
 STATIC I32     S_dopoptolabel(pTHX_ char *label);
 STATIC I32     S_dopoptoloop(pTHX_ I32 startingblock);
@@ -1169,7 +1171,7 @@ STATIC void       S_del_xpvbm(pTHX_ XPVBM* p);
 STATIC void    S_del_xrv(pTHX_ XRV* p);
 STATIC void    S_sv_unglob(pTHX_ SV* sv);
 STATIC void    S_not_a_number(pTHX_ SV *sv);
-STATIC I32     S_visit(pTHX_ SVFUNC_t f);
+STATIC I32     S_visit(pTHX_ SVFUNC_t f, U32 flags, U32 mask);
 STATIC void    S_sv_add_backref(pTHX_ SV *tsv, SV *sv);
 STATIC void    S_sv_del_backref(pTHX_ SV *sv);
 #  ifdef DEBUGGING
@@ -1329,8 +1331,96 @@ PERL_CALLCONV void       Perl_free_tied_hv_pool(pTHX);
 #if defined(DEBUGGING)
 PERL_CALLCONV int      Perl_get_debug_opts(pTHX_ char **s);
 #endif
+PERL_CALLCONV void     Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val);
+PERL_CALLCONV void     Perl_hv_assert(pTHX_ HV* tb);
 
+#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
+STATIC SV*     S_hv_delete_common(pTHX_ HV* tb, SV* key_sv, const char* key, STRLEN klen, int k_flags, I32 d_flags, U32 hash);
+STATIC HE*     S_hv_fetch_common(pTHX_ HV* tb, SV* key_sv, const char* key, STRLEN klen, int flags, int action, SV* val, U32 hash);
+#endif
 
+PERL_CALLCONV void     Perl_hv_clear_placeholders(pTHX_ HV* hb);
 
-END_EXTERN_C
+PERL_CALLCONV SV*      Perl_hv_scalar(pTHX_ HV* hv);
+PERL_CALLCONV SV*      Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC*      mg);
+#ifdef PERL_IN_SV_C
+STATIC SV*     S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top);
+#endif
 
+#ifdef PERL_NEED_MY_HTOLE16
+PERL_CALLCONV U16      Perl_my_htole16(U16 n);
+#endif
+#ifdef PERL_NEED_MY_LETOH16
+PERL_CALLCONV U16      Perl_my_letoh16(U16 n);
+#endif
+#ifdef PERL_NEED_MY_HTOBE16
+PERL_CALLCONV U16      Perl_my_htobe16(U16 n);
+#endif
+#ifdef PERL_NEED_MY_BETOH16
+PERL_CALLCONV U16      Perl_my_betoh16(U16 n);
+#endif
+#ifdef PERL_NEED_MY_HTOLE32
+PERL_CALLCONV U32      Perl_my_htole32(U32 n);
+#endif
+#ifdef PERL_NEED_MY_LETOH32
+PERL_CALLCONV U32      Perl_my_letoh32(U32 n);
+#endif
+#ifdef PERL_NEED_MY_HTOBE32
+PERL_CALLCONV U32      Perl_my_htobe32(U32 n);
+#endif
+#ifdef PERL_NEED_MY_BETOH32
+PERL_CALLCONV U32      Perl_my_betoh32(U32 n);
+#endif
+#ifdef PERL_NEED_MY_HTOLE64
+PERL_CALLCONV U64      Perl_my_htole64(U64 n);
+#endif
+#ifdef PERL_NEED_MY_LETOH64
+PERL_CALLCONV U64      Perl_my_letoh64(U64 n);
+#endif
+#ifdef PERL_NEED_MY_HTOBE64
+PERL_CALLCONV U64      Perl_my_htobe64(U64 n);
+#endif
+#ifdef PERL_NEED_MY_BETOH64
+PERL_CALLCONV U64      Perl_my_betoh64(U64 n);
+#endif
+
+#ifdef PERL_NEED_MY_HTOLES
+PERL_CALLCONV short    Perl_my_htoles(short n);
+#endif
+#ifdef PERL_NEED_MY_LETOHS
+PERL_CALLCONV short    Perl_my_letohs(short n);
+#endif
+#ifdef PERL_NEED_MY_HTOBES
+PERL_CALLCONV short    Perl_my_htobes(short n);
+#endif
+#ifdef PERL_NEED_MY_BETOHS
+PERL_CALLCONV short    Perl_my_betohs(short n);
+#endif
+#ifdef PERL_NEED_MY_HTOLEI
+PERL_CALLCONV int      Perl_my_htolei(int n);
+#endif
+#ifdef PERL_NEED_MY_LETOHI
+PERL_CALLCONV int      Perl_my_letohi(int n);
+#endif
+#ifdef PERL_NEED_MY_HTOBEI
+PERL_CALLCONV int      Perl_my_htobei(int n);
+#endif
+#ifdef PERL_NEED_MY_BETOHI
+PERL_CALLCONV int      Perl_my_betohi(int n);
+#endif
+#ifdef PERL_NEED_MY_HTOLEL
+PERL_CALLCONV long     Perl_my_htolel(long n);
+#endif
+#ifdef PERL_NEED_MY_LETOHL
+PERL_CALLCONV long     Perl_my_letohl(long n);
+#endif
+#ifdef PERL_NEED_MY_HTOBEL
+PERL_CALLCONV long     Perl_my_htobel(long n);
+#endif
+#ifdef PERL_NEED_MY_BETOHL
+PERL_CALLCONV long     Perl_my_betohl(long n);
+#endif
+
+PERL_CALLCONV void     Perl_my_swabn(void* ptr, int n);
+
+END_EXTERN_C