This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[Patch] doc patch on Unicode
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 9fd88d3..aafb94f 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -315,11 +315,13 @@ PERL_CALLCONV char*       Perl_hv_iterkey(pTHX_ HE* entry, I32* retlen);
 PERL_CALLCONV SV*      Perl_hv_iterkeysv(pTHX_ HE* entry);
 PERL_CALLCONV HE*      Perl_hv_iternext(pTHX_ HV* tb);
 PERL_CALLCONV SV*      Perl_hv_iternextsv(pTHX_ HV* hv, char** key, I32* retlen);
+PERL_CALLCONV HE*      Perl_hv_iternext_flags(pTHX_ HV* tb, I32 flags);
 PERL_CALLCONV SV*      Perl_hv_iterval(pTHX_ HV* tb, HE* entry);
 PERL_CALLCONV void     Perl_hv_ksplit(pTHX_ HV* hv, IV newmax);
 PERL_CALLCONV void     Perl_hv_magic(pTHX_ HV* hv, GV* gv, int how);
 PERL_CALLCONV SV**     Perl_hv_store(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash);
 PERL_CALLCONV HE*      Perl_hv_store_ent(pTHX_ HV* tb, SV* key, SV* val, U32 hash);
+PERL_CALLCONV SV**     Perl_hv_store_flags(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash, int flags);
 PERL_CALLCONV void     Perl_hv_undef(pTHX_ HV* tb);
 PERL_CALLCONV I32      Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len);
 PERL_CALLCONV I32      Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len);
@@ -375,6 +377,7 @@ PERL_CALLCONV bool  Perl_is_utf8_string(pTHX_ U8 *s, STRLEN len);
 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);
+PERL_CALLCONV bool     Perl_is_utf8_idcont(pTHX_ U8 *p);
 PERL_CALLCONV bool     Perl_is_utf8_alpha(pTHX_ U8 *p);
 PERL_CALLCONV bool     Perl_is_utf8_ascii(pTHX_ U8 *p);
 PERL_CALLCONV bool     Perl_is_utf8_space(pTHX_ U8 *p);
@@ -599,11 +602,7 @@ PERL_CALLCONV struct perl_thread*  Perl_new_struct_thread(pTHX_ struct perl_threa
 PERL_CALLCONV void     Perl_reentrant_size(pTHX);
 PERL_CALLCONV void     Perl_reentrant_init(pTHX);
 PERL_CALLCONV void     Perl_reentrant_free(pTHX);
-PERL_CALLCONV void*    Perl_reentrant_retry(const char*, ...)
-#ifdef CHECK_FORMAT
- __attribute__((format(printf,1,2)))
-#endif
-;
+PERL_CALLCONV void*    Perl_reentrant_retry(const char*, ...);
 #endif
 PERL_CALLCONV void     Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
 PERL_CALLCONV I32      Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
@@ -628,7 +627,7 @@ PERL_CALLCONV void  Perl_set_numeric_standard(pTHX);
 PERL_CALLCONV void     Perl_require_pv(pTHX_ const char* pv);
 PERL_CALLCONV void     Perl_pack_cat(pTHX_ SV *cat, char *pat, char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags);
 PERL_CALLCONV void     Perl_pidgone(pTHX_ Pid_t pid, int status);
-PERL_CALLCONV void     Perl_pmflag(pTHX_ U16* pmfl, int ch);
+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);
@@ -660,9 +659,9 @@ PERL_CALLCONV void  Perl_rxres_save(pTHX_ void** rsp, REGEXP* prx);
 #if !defined(HAS_RENAME)
 PERL_CALLCONV I32      Perl_same_dirent(pTHX_ char* a, char* b);
 #endif
-PERL_CALLCONV char*    Perl_savepv(pTHX_ const char* sv);
-PERL_CALLCONV char*    Perl_savesharedpv(pTHX_ const char* sv);
-PERL_CALLCONV char*    Perl_savepvn(pTHX_ const char* sv, I32 len);
+PERL_CALLCONV char*    Perl_savepv(pTHX_ const char* pv);
+PERL_CALLCONV char*    Perl_savesharedpv(pTHX_ const char* pv);
+PERL_CALLCONV char*    Perl_savepvn(pTHX_ const char* pv, I32 len);
 PERL_CALLCONV void     Perl_savestack_grow(pTHX);
 PERL_CALLCONV void     Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr);
 PERL_CALLCONV I32      Perl_save_alloc(pTHX_ I32 size, I32 pad);
@@ -800,7 +799,6 @@ PERL_CALLCONV void  Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...)
 ;
 PERL_CALLCONV void     Perl_sv_vsetpvf(pTHX_ SV* sv, const char* pat, va_list* args);
 PERL_CALLCONV void     Perl_sv_setiv(pTHX_ SV* sv, IV num);
-PERL_CALLCONV void     Perl_sv_setpviv(pTHX_ SV* sv, IV num);
 PERL_CALLCONV void     Perl_sv_setuv(pTHX_ SV* sv, UV num);
 PERL_CALLCONV void     Perl_sv_setnv(pTHX_ SV* sv, NV num);
 PERL_CALLCONV SV*      Perl_sv_setref_iv(pTHX_ SV* rv, const char* classname, IV iv);
@@ -923,7 +921,6 @@ PERL_CALLCONV void  Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...)
 ;
 PERL_CALLCONV void     Perl_sv_vsetpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args);
 PERL_CALLCONV void     Perl_sv_setiv_mg(pTHX_ SV *sv, IV i);
-PERL_CALLCONV void     Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv);
 PERL_CALLCONV void     Perl_sv_setuv_mg(pTHX_ SV *sv, UV u);
 PERL_CALLCONV void     Perl_sv_setnv_mg(pTHX_ SV *sv, NV num);
 PERL_CALLCONV void     Perl_sv_setpv_mg(pTHX_ SV *sv, const char *ptr);
@@ -954,9 +951,9 @@ PERL_CALLCONV void  Perl_reginitcolors(pTHX);
 PERL_CALLCONV char*    Perl_sv_2pv_nolen(pTHX_ SV* sv);
 PERL_CALLCONV char*    Perl_sv_2pvutf8_nolen(pTHX_ SV* sv);
 PERL_CALLCONV char*    Perl_sv_2pvbyte_nolen(pTHX_ SV* sv);
-PERL_CALLCONV char*    Perl_sv_pv(pTHX_ SV *sv);
-PERL_CALLCONV char*    Perl_sv_pvutf8(pTHX_ SV *sv);
-PERL_CALLCONV char*    Perl_sv_pvbyte(pTHX_ SV *sv);
+/* PERL_CALLCONV char* sv_pv(pTHX_ SV *sv); */
+/* PERL_CALLCONV char* sv_pvutf8(pTHX_ SV *sv); */
+/* PERL_CALLCONV char* sv_pvbyte(pTHX_ SV *sv); */
 /* PERL_CALLCONV STRLEN        sv_utf8_upgrade(pTHX_ SV *sv); */
 PERL_CALLCONV bool     Perl_sv_utf8_downgrade(pTHX_ SV *sv, bool fail_ok);
 PERL_CALLCONV void     Perl_sv_utf8_encode(pTHX_ SV *sv);
@@ -1004,6 +1001,7 @@ PERL_CALLCONV char *      Perl_custom_op_desc(pTHX_ OP* op);
 PERL_CALLCONV void     Perl_sv_nosharing(pTHX_ SV *);
 PERL_CALLCONV void     Perl_sv_nolocking(pTHX_ SV *);
 PERL_CALLCONV void     Perl_sv_nounlocking(pTHX_ SV *);
+PERL_CALLCONV int      Perl_nothreadhook(pTHX);
 
 END_EXTERN_C
 
@@ -1032,8 +1030,12 @@ STATIC void      S_hfreeentries(pTHX_ HV *hv);
 STATIC void    S_more_he(pTHX);
 STATIC HE*     S_new_he(pTHX);
 STATIC void    S_del_he(pTHX_ HE *p);
-STATIC HEK*    S_save_hek(pTHX_ const char *str, I32 len, U32 hash);
+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
 
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)