Blame parts/inc/pvs

Packit 7d6a7d
################################################################################
Packit 7d6a7d
##
Packit 7d6a7d
##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
Packit 7d6a7d
##  Version 2.x, Copyright (C) 2001, Paul Marquess.
Packit 7d6a7d
##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
Packit 7d6a7d
##
Packit 7d6a7d
##  This program is free software; you can redistribute it and/or
Packit 7d6a7d
##  modify it under the same terms as Perl itself.
Packit 7d6a7d
##
Packit 7d6a7d
################################################################################
Packit 7d6a7d
Packit 7d6a7d
=provides
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__
Packit 7d6a7d
Packit 7d6a7d
=implementation
Packit 7d6a7d
Packit 7d6a7d
/* concatenating with "" ensures that only literal strings are accepted as argument
Packit 7d6a7d
 * note that STR_WITH_LEN() can't be used as argument to macros or functions that
Packit 7d6a7d
 * under some configurations might be macros
Packit 7d6a7d
 */
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  STR_WITH_LEN(s)             (s ""), (sizeof(s)-1)
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  newSVpvs(str)               newSVpvn(str "", sizeof(str) - 1)
Packit 7d6a7d
__UNDEFINED__  newSVpvs_flags(str, flags)  newSVpvn_flags(str "", sizeof(str) - 1, flags)
Packit 7d6a7d
__UNDEFINED__  newSVpvs_share(str)         newSVpvn_share(str "", sizeof(str) - 1, 0)
Packit 7d6a7d
__UNDEFINED__  sv_catpvs(sv, str)          sv_catpvn(sv, str "", sizeof(str) - 1)
Packit 7d6a7d
__UNDEFINED__  sv_setpvs(sv, str)          sv_setpvn(sv, str "", sizeof(str) - 1)
Packit 7d6a7d
__UNDEFINED__  hv_fetchs(hv, key, lval)    hv_fetch(hv, key "", sizeof(key) - 1, lval)
Packit 7d6a7d
__UNDEFINED__  hv_stores(hv, key, val)     hv_store(hv, key "", sizeof(key) - 1, val, 0)
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  gv_fetchpvs(name, flags, svt)            gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt)
Packit 7d6a7d
__UNDEFINED__  gv_stashpvs(name, flags)                 gv_stashpvn(name "", sizeof(name) - 1, flags)
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  get_cvs(name, flags)                     get_cvn_flags(name "", sizeof(name)-1, flags)
Packit 7d6a7d
Packit 7d6a7d
=xsinit
Packit 7d6a7d
Packit 7d6a7d
#define NEED_newSVpvn_share
Packit 7d6a7d
Packit 7d6a7d
=xsubs
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
newSVpvs()
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                mXPUSHs(newSVpvs("newSVpvs"));
Packit 7d6a7d
                XSRETURN(1);
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
newSVpvs_flags()
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                XPUSHs(newSVpvs_flags("newSVpvs_flags", SVs_TEMP));
Packit 7d6a7d
                XSRETURN(1);
Packit 7d6a7d
Packit 7d6a7d
int
Packit 7d6a7d
newSVpvs_share()
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                SV *sv;
Packit 7d6a7d
                U32 hash;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = 0;
Packit 7d6a7d
                PERL_HASH(hash, "pvs", 3);
Packit 7d6a7d
                sv = newSVpvs_share("pvs");
Packit 7d6a7d
                RETVAL += strEQ(SvPV_nolen_const(sv), "pvs");
Packit 7d6a7d
                RETVAL += SvCUR(sv) == 3;
Packit 7d6a7d
                RETVAL += SvSHARED_HASH(sv) == hash;
Packit 7d6a7d
                SvREFCNT_dec(sv);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
sv_catpvs(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                sv_catpvs(sv, "sv_catpvs");
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
sv_setpvs(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                sv_setpvs(sv, "sv_setpvs");
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
hv_fetchs(hv)
Packit 7d6a7d
        SV *hv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                SV **s;
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0);
Packit 7d6a7d
                XPUSHs(sv_mortalcopy(*s));
Packit 7d6a7d
                XSRETURN(1);
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
hv_stores(hv, sv)
Packit 7d6a7d
        SV *hv
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                (void) hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc_simple(sv));
Packit 7d6a7d
Packit 7d6a7d
SV*
Packit 7d6a7d
gv_fetchpvs()
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = newRV_inc((SV*)gv_fetchpvs("Devel::PPPort::VERSION", 0, SVt_PV));
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
SV*
Packit 7d6a7d
gv_stashpvs()
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = newRV_inc((SV*)gv_stashpvs("Devel::PPPort", 0));
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
int
Packit 7d6a7d
get_cvs()
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                CV* xv;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                RETVAL = 0;
Packit 7d6a7d
                xv = get_cvs("Devel::PPPort::foobar", 0);
Packit 7d6a7d
                if(xv == NULL) RETVAL++;
Packit 7d6a7d
                xv = get_cvs("Devel::PPPort::foobar", GV_ADDMULTI);
Packit 7d6a7d
                if(xv && SvTYPE(xv) == SVt_PVCV) RETVAL++;
Packit 7d6a7d
                xv = get_cvs("Devel::PPPort::get_cvs", 0);
Packit 7d6a7d
                if(xv && SvTYPE(xv) == SVt_PVCV) RETVAL++;
Packit 7d6a7d
OUTPUT:
Packit 7d6a7d
        RETVAL
Packit 7d6a7d
Packit 7d6a7d
Packit 7d6a7d
=tests plan => 12
Packit 7d6a7d
Packit 7d6a7d
my $x = 'foo';
Packit 7d6a7d
Packit 7d6a7d
ok(Devel::PPPort::newSVpvs(), "newSVpvs");
Packit 7d6a7d
ok(Devel::PPPort::newSVpvs_flags(), "newSVpvs_flags");
Packit 7d6a7d
ok(Devel::PPPort::newSVpvs_share(), 3);
Packit 7d6a7d
Packit 7d6a7d
Devel::PPPort::sv_catpvs($x);
Packit 7d6a7d
ok($x, "foosv_catpvs");
Packit 7d6a7d
Packit 7d6a7d
Devel::PPPort::sv_setpvs($x);
Packit 7d6a7d
ok($x, "sv_setpvs");
Packit 7d6a7d
Packit 7d6a7d
my %h = ('hv_fetchs' => 42);
Packit 7d6a7d
Devel::PPPort::hv_stores(\%h, 4711);
Packit 7d6a7d
ok(scalar keys %h, 2);
Packit 7d6a7d
ok(exists $h{'hv_stores'});
Packit 7d6a7d
ok($h{'hv_stores'}, 4711);
Packit 7d6a7d
ok(Devel::PPPort::hv_fetchs(\%h), 42);
Packit 7d6a7d
ok(Devel::PPPort::gv_fetchpvs(), \*Devel::PPPort::VERSION);
Packit 7d6a7d
ok(Devel::PPPort::gv_stashpvs(), \%Devel::PPPort::);
Packit 7d6a7d
Packit 7d6a7d
ok(Devel::PPPort::get_cvs(), 3);