[dodgy PATCH] Re: [Storable] utf8 keys started working!
[p5sagit/p5-mst-13.2.git] / proto.h
diff --git a/proto.h b/proto.h
index b7515be..1b55ae9 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);
@@ -660,9 +662,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);
@@ -954,9 +956,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 +1006,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 +1035,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)
@@ -1196,8 +1203,7 @@ STATIC I32        S_regmatch(pTHX_ regnode *prog);
 STATIC I32     S_regrepeat(pTHX_ regnode *p, I32 max);
 STATIC I32     S_regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp);
 STATIC I32     S_regtry(pTHX_ regexp *prog, char *startpos);
-STATIC bool    S_reginclass(pTHX_ regnode *n, U8 *p, bool do_utf8sv_is_utf8);
-STATIC bool    S_reginclasslen(pTHX_ regnode *n, U8 *p, STRLEN *lenp, bool do_utf8sv_is_utf8);
+STATIC bool    S_reginclass(pTHX_ regnode *n, U8 *p, STRLEN *lenp, bool do_utf8sv_is_utf8);
 STATIC CHECKPOINT      S_regcppush(pTHX_ I32 parenfloor);
 STATIC char*   S_regcppop(pTHX);
 STATIC char*   S_regcp_set_to(pTHX_ I32 ss);
@@ -1207,6 +1213,8 @@ STATIC U8*        S_reghop3(pTHX_ U8 *pos, I32 off, U8 *lim);
 STATIC U8*     S_reghopmaybe(pTHX_ U8 *pos, I32 off);
 STATIC U8*     S_reghopmaybe3(pTHX_ U8 *pos, I32 off, U8 *lim);
 STATIC char*   S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *startpos, I32 norun);
+STATIC void    S_to_utf8_substr(pTHX_ regexp * prog);
+STATIC void    S_to_byte_substr(pTHX_ regexp * prog);
 #endif
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
@@ -1320,9 +1328,6 @@ STATIC char*      S_incl_perldb(pTHX);
 STATIC I32     S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
 STATIC I32     S_utf16rev_textfilter(pTHX_ int idx, SV *sv, int maxlen);
 #endif
-#  if defined(CRIPPLED_CC)
-STATIC int     S_uni(pTHX_ I32 f, char *s);
-#  endif
 #  if defined(PERL_CR_FILTER)
 STATIC I32     S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
 #  endif