1 ################################################################################
5 ## $Date: 2010/03/07 13:15:44 +0100 $
7 ################################################################################
9 ## Version 3.x, Copyright (C) 2004-2010, Marcus Holland-Moritz.
10 ## Version 2.x, Copyright (C) 2001, Paul Marquess.
11 ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
13 ## This program is free software; you can redistribute it and/or
14 ## modify it under the same terms as Perl itself.
16 ################################################################################
25 /* Hint: newSVpvn_share
26 * The SVs created by this function only mimic the behaviour of
27 * shared PVs without really being shared. Only use if you know
31 #ifndef newSVpvn_share
33 #if { NEED newSVpvn_share }
36 newSVpvn_share(pTHX_ const char *src, I32 len, U32 hash)
42 PERL_HASH(hash, (char*) src, len);
43 sv = newSVpvn((char *) src, len);
44 sv_upgrade(sv, SVt_PVIV);
55 __UNDEFINED__ SvSHARED_HASH(sv) (0 + SvUVX(sv))
59 #define NEED_newSVpvn_share
74 PERL_HASH(hash, (char *) s, len);
75 sv = newSVpvn_share(s, len, 0);
77 RETVAL += strEQ(SvPV_nolen_const(sv), "mhx");
78 RETVAL += SvCUR(sv) == len;
79 RETVAL += SvSHARED_HASH(sv) == hash;
83 PERL_HASH(hash, (char *) s, len);
84 sv = newSVpvn_share(s, -(I32) len, hash);
86 RETVAL += strEQ(SvPV_nolen_const(sv), "foobar");
87 RETVAL += SvCUR(sv) == len;
88 RETVAL += SvSHARED_HASH(sv) == hash;
96 ok(&Devel::PPPort::newSVpvn_share(), 6);