Devel-PPPort

 view release on metacpan or  search on metacpan

parts/inc/gv  view on Meta::CPAN

                RETVAL

int
isGV_with_GP()
        PREINIT:
                GV* gv;
        CODE:
                RETVAL = 0;
                gv = gv_fetchpvs("Devel::PPPort::GvTest", GV_ADDMULTI, SVt_PVGV);
                if (isGV_with_GP(gv))
                {
                  RETVAL++;
                }
                if (!isGV(&PL_sv_undef))
                {
                  RETVAL++;
                }
        OUTPUT:
                RETVAL

int
get_cvn_flags()
        PREINIT:
                CV* xv;
        CODE:
                RETVAL = 0;
                xv = get_cvn_flags("Devel::PPPort::foobar", sizeof("Devel::PPPort::foobar")-1, 0);
                if(xv == NULL) RETVAL++;
                xv = get_cvn_flags("Devel::PPPort::foobar", sizeof("Devel::PPPort::foobar")-1, GV_ADDMULTI);
                if(xv && SvTYPE(xv) == SVt_PVCV) RETVAL++;
                xv = get_cvn_flags("Devel::PPPort::get_cvn_flags", sizeof("Devel::PPPort::get_cvn_flags")-1, 0);
                if(xv && SvTYPE(xv) == SVt_PVCV) RETVAL++;
        OUTPUT:
                RETVAL

SV*
gv_fetchpvn_flags()
        CODE:
                RETVAL = newRV_inc((SV*)gv_fetchpvn_flags("Devel::PPPort::VERSIONFAKE", sizeof("Devel::PPPort::VERSIONFAKE")-5, 0, SVt_PV));
        OUTPUT:
                RETVAL

SV*
gv_fetchsv(name)
        SV *name
        CODE:
                RETVAL = newRV_inc((SV*)gv_fetchsv(name, 0, SVt_PV));
        OUTPUT:
                RETVAL

void
gv_init_type(namesv, multi, flags)
    SV* namesv
    int multi
    I32 flags
    PREINIT:
        HV *defstash = gv_stashpv("main", 0);
        STRLEN len;
        const char * const name = SvPV_const(namesv, len);
        GV *gv = *(GV**)hv_fetch(defstash, name, len, TRUE);
    PPCODE:
        if (SvTYPE(gv) == SVt_PVGV)
            Perl_croak(aTHX_ "GV is already a PVGV");
        if (multi) flags |= GV_ADDMULTI;
        gv_init_pvn(gv, defstash, name, len, flags);
	XPUSHs( gv ? (SV*)gv : &PL_sv_undef);

=tests plan => 7

is(Devel::PPPort::GvSVn(), 1);

is(Devel::PPPort::isGV_with_GP(), 2);

is(Devel::PPPort::get_cvn_flags(), 3);

is(Devel::PPPort::gv_fetchpvn_flags(), \*Devel::PPPort::VERSION);

is(Devel::PPPort::gv_fetchsv("Devel::PPPort::VERSION"), \*Devel::PPPort::VERSION);

is(Devel::PPPort::gv_init_type("sanity_check", 0, 0), "*main::sanity_check");
ok($::{sanity_check});



( run in 2.835 seconds using v1.01-cache-2.11-cpan-a49fcb8fa48 )