Storable

 view release on metacpan or  search on metacpan

Storable.xs  view on Meta::CPAN


    PERL_UNUSED_ARG(mg);
#ifdef USE_PTR_TABLE
    if (cxt->pseen)
        ptr_table_free(cxt->pseen);
#endif
    if (kbuf)
        Safefree(kbuf);
    if (!cxt->membuf_ro && mbase)
        Safefree(mbase);
    if (cxt->membuf_ro && (cxt->msaved).arena)
        Safefree((cxt->msaved).arena);
    return 0;
}

MODULE = Storable       PACKAGE = Storable

PROTOTYPES: ENABLE

BOOT:
{
    HV *stash = gv_stashpvn("Storable", 8, GV_ADD);
    newCONSTSUB(stash, "BIN_MAJOR", newSViv(STORABLE_BIN_MAJOR));
    newCONSTSUB(stash, "BIN_MINOR", newSViv(STORABLE_BIN_MINOR));
    newCONSTSUB(stash, "BIN_WRITE_MINOR", newSViv(STORABLE_BIN_WRITE_MINOR));

    newCONSTSUB(stash, "CAN_FLOCK", CAN_FLOCK);

    init_perinterp(aTHX);
    gv_fetchpv("Storable::drop_utf8",   GV_ADDMULTI, SVt_PV);
#ifdef DEBUGME
    /* Only disable the used only once warning if we are in debugging mode.  */
    gv_fetchpv("Storable::DEBUGME",   GV_ADDMULTI, SVt_PV);
#endif
#ifdef USE_56_INTERWORK_KLUDGE
    gv_fetchpv("Storable::interwork_56_64bit",   GV_ADDMULTI, SVt_PV);
#endif
    }

void
init_perinterp()
CODE:
    init_perinterp(aTHX);

# pstore
#
# Store the transitive data closure of given object to disk.
# Returns undef on error, a true value otherwise.

# net_pstore
#
# Same as pstore(), but network order is used for integers and doubles are
# emitted as strings.

SV *
pstore(f,obj)
    OutputStream f
    SV*         obj
ALIAS:
    net_pstore = 1
PPCODE:
    RETVAL = do_store(aTHX_ f, obj, 0, ix, (SV **)0) ? &PL_sv_yes : &PL_sv_undef;
    /* do_store() can reallocate the stack, so need a sequence point to ensure
       that ST(0) knows about it. Hence using two statements.  */
    ST(0) = RETVAL;
    XSRETURN(1);

# mstore
#
# Store the transitive data closure of given object to memory.
# Returns undef on error, a scalar value containing the data otherwise.

# net_mstore
#
# Same as mstore(), but network order is used for integers and doubles are
# emitted as strings.

SV *
mstore(obj)
    SV* obj
ALIAS:
    net_mstore = 1
CODE:
    RETVAL = &PL_sv_undef;
    if (!do_store(aTHX_ (PerlIO*) 0, obj, 0, ix, &RETVAL))
        RETVAL = &PL_sv_undef;
OUTPUT:
    RETVAL

SV *
pretrieve(f, flag = 6)
    InputStream f
    IV          flag
CODE:
    RETVAL = pretrieve(aTHX_ f, flag);
OUTPUT:
    RETVAL

SV *
mretrieve(sv, flag = 6)
    SV* sv
    IV  flag
CODE:
    RETVAL = mretrieve(aTHX_ sv, flag);
OUTPUT:
    RETVAL

SV *
dclone(sv)
    SV* sv
CODE:
    RETVAL = dclone(aTHX_ sv);
OUTPUT:
    RETVAL

SV*
last_op_in_netorder()
ALIAS:
    is_storing = ST_STORE
    is_retrieving = ST_RETRIEVE
PREINIT:



( run in 1.350 second using v1.01-cache-2.11-cpan-5511b514fd6 )