ObjStore-Lib-PDL
view release on metacpan or search on metacpan
assert(sizeof(PDL_Long) == sizeof(os_int32));
SV *APIV = perl_get_sv("ObjStore::Lib::PDL::APIVERSION", 1);
sv_setiv(APIV, OBJSTORE_LIB_PDL_VERSION);
SvREADONLY_on(APIV);
init_out_of_scope();
void
_allocate(CSV, seg)
SV *CSV;
SV *seg;
PPCODE:
os_segment *area = osp_thr::sv_2segment(seg);
PUTBACK;
OSSVPV *pv;
NEW_OS_OBJECT(pv, area, Lib__PDL1::get_os_typespec(), Lib__PDL1);
pv->bless(CSV);
return;
void
_PurgeFreelist()
CODE:
int lv
CODE:
RETVAL = Debug;
Debug = lv;
OUTPUT:
RETVAL
void
_inuse_bridges(...)
PROTOTYPE: ;$
PPCODE:
IV show = items>0? sv_true(ST(0)) : 0;
IV cnt=0;
#if OSP_BRIDGE_TRACE
pdl_bridge *br = (pdl_bridge*) pdl_bridge::All.next_self();
while (br) {
if (show) {
SV *sv = sv_2mortal(newSVpv("",0));
sv_catpvf(sv,"[%d]pdl_bridge 0x%x\n", cnt, br);
sv_catpvf(sv," bridge : 0x%x\n", br->bridge);
sv_catpvf(sv," proxy : 0x%x\n", br->proxy);
}
++cnt;
br = (pdl_bridge*) br->al.next_self();
}
#else
warn("_inuse_bridges detail is not available");
#endif
void
OSSVPV::getndims()
PPCODE:
XPUSHs(sv_2mortal(newSViv(((Lib__PDL1*)THIS)->ndims)));
void
OSSVPV::getdim(y)
int y;
PPCODE:
XPUSHs(sv_2mortal(newSViv(((Lib__PDL1*)THIS)->dims[y])));
void
OSSVPV::setdims(sv)
SV *sv
CODE:
if (!(SvROK(sv) && SvTYPE(SvRV(sv))==SVt_PVAV))
croak("setdims: expecting an array ref");
AV *ar = (AV*) SvRV(sv);
int ndims = av_len(ar)+1;
OSSVPV::set_datatype(datatype)
int datatype;
CODE:
((Lib__PDL1*)THIS)->set_datatype(datatype);
if (THIS_bridge->info)
((pdl_bridge*) THIS_bridge->info)->init(((Lib__PDL1*)THIS));
void
copy(THIS)
OSSVPV *THIS;
PPCODE:
OSSVPV *cpy;
NEW_OS_OBJECT(cpy, os_segment::of(THIS), Lib__PDL1::get_os_typespec(),
Lib__PDL1);
((Lib__PDL1*)cpy)->copy(* (Lib__PDL1*)THIS);
SV *me = osp_thr::ospv_2sv(cpy, 1);
XPUSHs(me);
void
OSSVPV::upd_data()
CODE:
/* do nothing */
void
OSSVPV::at(...)
PPCODE:
Lib__PDL1_c pdl((Lib__PDL1*)THIS);
if (items-1 != pdl.ndims)
croak("PDL->set expecting %d dimensions (not %d)", pdl.ndims, items-1);
pdl.seek(&ST(1));
SV *ret;
switch (pdl.datatype) {
case PDL_B: ret = newSViv(pdl.at_b()); break;
case PDL_S: ret = newSViv(pdl.at_s()); break;
case PDL_US: ret = newSViv(pdl.at_us()); break;
case PDL_L: ret = newSViv(pdl.at_l()); break;
case PDL_F: ret = newSVnv(pdl.at_f()); break;
case PDL_D: ret = newSVnv(pdl.at_d()); break;
default: croak("datatype unknown");
}
XPUSHs(sv_2mortal(ret));
void
OSSVPV::set(...)
PPCODE:
Lib__PDL1_c pdl((Lib__PDL1*)THIS);
if (items-1 != pdl.ndims + 1)
croak("PDL->set expecting %d dimensions (not %d)", pdl.ndims, items-2);
pdl.seek(&ST(1));
pdl.set(ST(items-1));
void
DESTROY(sv)
SV *sv
PPCODE:
ospv_bridge* br;
br= (ospv_bridge*) typemap_any::try_decode(sv, ospdl_dynacast, 0);
if (br) {
br->leave_perl();
}
( run in 1.354 second using v1.01-cache-2.11-cpan-5511b514fd6 )