This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix Win32 breakage caused by change 23610
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 987774a..066774c 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.
@@ -228,7 +228,7 @@ PERL_CALLCONV GV*   Perl_gv_IOadd(pTHX_ GV* gv);
 PERL_CALLCONV GV*      Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method);
 PERL_CALLCONV void     Perl_gv_check(pTHX_ HV* stash);
 PERL_CALLCONV void     Perl_gv_efullname(pTHX_ SV* sv, GV* gv);
-PERL_CALLCONV void     Perl_gv_efullname3(pTHX_ SV* sv, GV* gv, const char* prefix);
+/* PERL_CALLCONV void  gv_efullname3(pTHX_ SV* sv, GV* gv, const char* prefix); */
 PERL_CALLCONV void     Perl_gv_efullname4(pTHX_ SV* sv, GV* gv, const char* prefix, bool keepmain);
 PERL_CALLCONV GV*      Perl_gv_fetchfile(pTHX_ const char* name);
 PERL_CALLCONV GV*      Perl_gv_fetchmeth(pTHX_ HV* stash, const char* name, STRLEN len, I32 level);
@@ -237,7 +237,7 @@ PERL_CALLCONV GV*   Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name);
 PERL_CALLCONV GV*      Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload);
 PERL_CALLCONV GV*      Perl_gv_fetchpv(pTHX_ const char* name, I32 add, I32 sv_type);
 PERL_CALLCONV void     Perl_gv_fullname(pTHX_ SV* sv, GV* gv);
-PERL_CALLCONV void     Perl_gv_fullname3(pTHX_ SV* sv, GV* gv, const char* prefix);
+/* PERL_CALLCONV void  gv_fullname3(pTHX_ SV* sv, GV* gv, const char* prefix); */
 PERL_CALLCONV void     Perl_gv_fullname4(pTHX_ SV* sv, GV* gv, const char* prefix, bool keepmain);
 PERL_CALLCONV void     Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi);
 PERL_CALLCONV HV*      Perl_gv_stashpv(pTHX_ const char* name, I32 create);
@@ -340,6 +340,8 @@ PERL_CALLCONV void  Perl_lex_end(pTHX);
 PERL_CALLCONV void     Perl_lex_start(pTHX_ SV* line);
 PERL_CALLCONV void     Perl_op_null(pTHX_ OP* o);
 PERL_CALLCONV void     Perl_op_clear(pTHX_ OP* o);
+PERL_CALLCONV void     Perl_op_refcnt_lock(pTHX);
+PERL_CALLCONV void     Perl_op_refcnt_unlock(pTHX);
 PERL_CALLCONV OP*      Perl_linklist(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_list(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_listkids(pTHX_ OP* o);
@@ -514,10 +516,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);
@@ -528,6 +531,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);
@@ -568,12 +572,10 @@ PERL_CALLCONV void        Perl_pack_cat(pTHX_ SV *cat, char *pat, char *patend, SV **be
 PERL_CALLCONV void     Perl_packlist(pTHX_ SV *cat, char *pat, char *patend, SV **beglist, SV **endlist);
 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_pmruntime(pTHX_ OP* pm, OP* expr, bool isreg);
 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);
@@ -667,14 +669,16 @@ 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);
@@ -718,7 +722,7 @@ PERL_CALLCONV int   Perl_sv_isobject(pTHX_ SV* sv);
 PERL_CALLCONV STRLEN   Perl_sv_len(pTHX_ SV* sv);
 PERL_CALLCONV STRLEN   Perl_sv_len_utf8(pTHX_ SV* sv);
 PERL_CALLCONV void     Perl_sv_magic(pTHX_ SV* sv, SV* obj, int how, const char* name, I32 namlen);
-PERL_CALLCONV MAGIC *  Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, MGVTBL *vtbl, const char* name, I32 namlen     );
+PERL_CALLCONV MAGIC *  Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, MGVTBL *vtbl, const char* name, I32 namlen);
 PERL_CALLCONV SV*      Perl_sv_mortalcopy(pTHX_ SV* oldsv);
 PERL_CALLCONV SV*      Perl_sv_newmortal(pTHX);
 PERL_CALLCONV SV*      Perl_sv_newref(pTHX_ SV* sv);
@@ -802,7 +806,7 @@ 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);
@@ -813,9 +817,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);
@@ -952,7 +953,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
 
@@ -1001,9 +1001,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
@@ -1043,7 +1043,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);
@@ -1172,7 +1173,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
@@ -1228,7 +1229,7 @@ STATIC char *     S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append);
 STATIC HV *    S_find_in_my_stash(pTHX_ char *pkgname, I32 len);
 STATIC SV*     S_new_constant(pTHX_ char *s, STRLEN len, const char *key, SV *sv, SV *pv, const char *type);
 #  if defined(DEBUGGING)
-STATIC void    S_tokereport(pTHX_ char *thing, char *s, I32 rv);
+STATIC int     S_tokereport(pTHX_ char *s, I32 rv);
 #  endif
 STATIC int     S_ao(pTHX_ int toketype);
 STATIC void    S_depcom(pTHX);
@@ -1330,13 +1331,98 @@ STATIC void     S_cv_dump(pTHX_ CV *cv, char *title);
 PERL_CALLCONV CV*      Perl_find_runcv(pTHX_ U32 *db_seqp);
 PERL_CALLCONV void     Perl_free_tied_hv_pool(pTHX);
 #if defined(DEBUGGING)
-PERL_CALLCONV int      Perl_get_debug_opts(pTHX_ char **s);
+PERL_CALLCONV int      Perl_get_debug_opts(pTHX_ char **s, bool givehelp);
 #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 bool    S_hv_exists_common(pTHX_ HV* tb, SV* key_sv, const char* key, I32 klen, U32 hash);
+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);
+
+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
-END_EXTERN_C
 
+#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