PDL
view release on metacpan or search on metacpan
lib/PDL/Core.xs view on Meta::CPAN
trans_parent(self)
pdl *self;
CODE:
RETVAL = self->trans_parent;
OUTPUT:
RETVAL
void
trans_children(self)
pdl *self
PPCODE:
U8 gimme = GIMME_V;
if (gimme == G_SCALAR)
mXPUSHu(self->ntrans_children);
else if (gimme == G_ARRAY) {
EXTEND(SP, self->ntrans_children);
PDL_Indx i;
for (i = 0; i < self->ntrans_children_allocated; i++) {
pdl_trans *t = self->trans_children[i];
if (!t) continue;
SV *sv = sv_newmortal();
lib/PDL/Core.xs view on Meta::CPAN
pdl *x
CODE:
RETVAL = x->nvals;
OUTPUT:
RETVAL
# only returns list, not context-aware
void
dimincs_nophys(x)
pdl *x
PPCODE:
EXTEND(SP, x->ndims);
PDL_Indx i;
for(i=0; i<x->ndims; i++) mPUSHi(PDL_REPRINC(x,i));
# only returns list, not context-aware
void
dims_nophys(x)
pdl *x
PPCODE:
EXTEND(SP, x->ndims);
PDL_Indx i;
for(i=0; i<x->ndims; i++) mPUSHi(x->dims[i]);
# only returns list, not context-aware
void
broadcastids_nophys(x)
pdl *x
PPCODE:
EXTEND(SP, x->nbroadcastids);
PDL_Indx i;
for(i=0; i<x->nbroadcastids; i++) mPUSHi(x->broadcastids[i]);
void
firstvals_nophys(x)
pdl *x
PPCODE:
if (!(x->state & PDL_ALLOCATED)) barf("firstvals_nophys called on non-ALLOCATED %p", x);
PDL_Indx i, maxvals = PDLMIN(10, x->nvals);
EXTEND(SP, maxvals);
for(i=0; i<maxvals; i++) {
PDL_Anyval anyval = { PDL_INVALID, {0} };
ANYVAL_FROM_CTYPE_OFFSET(anyval, x->datatype, PDL_REPRP(x), PDL_REPROFFS(x)+i);
if (anyval.type < 0) barf("Error getting value, type=%d", anyval.type);
SV *sv = sv_newmortal();
ANYVAL_TO_SV(sv, anyval);
PUSHs(sv);
lib/PDL/Core.xs view on Meta::CPAN
pdl *self;
CODE:
if (!self->vafftrans) barf("vaffine_from called on %p with NULL vafftrans", self);
RETVAL = PTR2IV(self->vafftrans->from);
OUTPUT:
RETVAL
void
flags(x)
pdl *x
PPCODE:
PDL_FLAG_DUMP(PDL_LIST_FLAGS_PDLSTATE, x->state)
int
set_donttouchdata(it,size=-1)
pdl *it
IV size
CODE:
it->state |= PDL_DONTTOUCHDATA | PDL_ALLOCATED;
if (size >= 0) it->nbytes = size;
RETVAL = 1;
lib/PDL/Core.xs view on Meta::CPAN
int
get_autopthread_dim()
CODE:
RETVAL = pdl_autopthread_dim;
OUTPUT:
RETVAL
void
_ci(...)
PPCODE:
PDL_XS_SCALAR(PDL_CD, C, 0 + I)
void
_nan(...)
PPCODE:
PDL_XS_SCALAR(PDL_D, D, NAN)
void
_inf(...)
PPCODE:
PDL_XS_SCALAR(PDL_D, D, INFINITY)
MODULE = PDL::Core PACKAGE = PDL::Trans
void
parents(trans)
pdl_trans *trans
PPCODE:
TRANS_PDLS(0, vtable->nparents)
void
children(trans)
pdl_trans *trans
PPCODE:
TRANS_PDLS(vtable->nparents, vtable->npdls)
IV
address(self)
pdl_trans *self;
CODE:
RETVAL = PTR2IV(self);
OUTPUT:
RETVAL
lib/PDL/Core.xs view on Meta::CPAN
bvalflag(x)
pdl_trans *x
CODE:
RETVAL = x->bvalflag;
OUTPUT:
RETVAL
void
flags(x)
pdl_trans *x
PPCODE:
PDL_FLAG_DUMP(PDL_LIST_FLAGS_PDLTRANS, x->flags)
pdl_transvtable *
vtable(x)
pdl_trans *x
CODE:
if (!x->vtable) barf("%p has NULL vtable", x);
RETVAL = x->vtable;
OUTPUT:
RETVAL
lib/PDL/Core.xs view on Meta::CPAN
offs(self)
pdl_trans *self;
CODE:
RETVAL = PTR2IV(self->offs);
OUTPUT:
RETVAL
void
incs(x)
pdl_trans *x;
PPCODE:
if (!(x->flags & PDL_ITRANS_ISAFFINE)) barf("incs called on non-vaffine trans %p", x);
PDL_Indx i, max = x->incs ? x->pdls[1]->ndims : 0;
EXTEND(SP, max);
for(i=0; i<max; i++) mPUSHi(x->incs[i]);
# CORE21 hook up to own data
void
trans_children_indices(x)
pdl_trans *x;
PPCODE:
PDL_Indx i, max = x->vtable->ninds + x->vtable->nparents;
EXTEND(SP, max);
for(i=x->vtable->ninds; i<max; i++) mPUSHi(x->ind_sizes[i]);
void
ind_sizes(x)
pdl_trans *x;
PPCODE:
PDL_Indx i, max = x->vtable->ninds;
EXTEND(SP, max);
for(i=0; i<max; i++) mPUSHi(x->ind_sizes[i]);
void
inc_sizes(x)
pdl_trans *x;
PPCODE:
PDL_Indx i, max = x->vtable->nind_ids; /* CORE21 rename nind_ids */
EXTEND(SP, max);
for(i=0; i<max; i++) mPUSHi(x->inc_sizes[i]);
MODULE = PDL::Core PACKAGE = PDL::Trans::VTable
char *
name(x)
pdl_transvtable *x;
CODE:
RETVAL = x->name;
OUTPUT:
RETVAL
void
flags(x)
pdl_transvtable *x
PPCODE:
PDL_FLAG_DUMP(PDL_LIST_FLAGS_PDLVTABLE, x->flags)
void
par_names(x)
pdl_transvtable *x
PPCODE:
EXTEND(SP, 2);
PDL_Indx i;
for (i=0; i < 2; i++) {
AV *av = (AV *)sv_2mortal((SV *)newAV());
if (!av) barf("Failed to create AV");
mPUSHs(newRV_inc((SV *)av));
PDL_Indx start = i==0 ? 0 : x->nparents, j, max = i==0 ? x->nparents : x->npdls;
av_extend(av, max-start);
for (j = start; j < max; j++) {
SV *sv = newSVpv(x->par_names[j], 0);
lib/PDL/Core.xs view on Meta::CPAN
RETVAL = x->ndims;
OUTPUT:
RETVAL
void
dims(x)
pdl *x
PREINIT:
PDL_Indx i;
U8 gimme = GIMME_V;
PPCODE:
PDLDEBUG_f(printf("Core::dims calling ")); pdl_barf_if_error(pdl_make_physdims(x));
if (gimme == G_ARRAY) {
EXTEND(SP, x->ndims);
for(i=0; i<x->ndims; i++) mPUSHi(x->dims[i]);
}
else if (gimme == G_SCALAR) {
mXPUSHu(x->ndims);
}
# only returns list, not context-aware
void
dimincs(x)
pdl *x
PREINIT:
PDL_Indx i;
PPCODE:
pdl_barf_if_error(pdl_make_physvaffine(x));
EXTEND(SP, x->ndims);
for (i=0; i<x->ndims; i++) mPUSHi(PDL_REPRINC(x,i));
PDL_Indx
getdim(x,y)
pdl *x
PDL_Indx y
ALIAS:
PDL::dim = 1
lib/PDL/Core.xs view on Meta::CPAN
RETVAL = x->nbroadcastids;
OUTPUT:
RETVAL
void
broadcastids(x)
pdl *x
PREINIT:
PDL_Indx i;
U8 gimme = GIMME_V;
PPCODE:
PDLDEBUG_f(printf("Core::broadcastids calling ")); pdl_barf_if_error(pdl_make_physdims(x));
if (gimme == G_ARRAY) {
EXTEND(SP, x->nbroadcastids);
for(i=0; i<x->nbroadcastids; i++) mPUSHi(x->broadcastids[i]);
}
else if (gimme == G_SCALAR) {
mXPUSHu(x->nbroadcastids);
}
PDL_Indx
lib/PDL/Core.xs view on Meta::CPAN
CODE:
pdl_barf_if_error(pdl_make_physvaffine( x ));
RETVAL = pdl2avref(x, 0);
OUTPUT:
RETVAL
void
dog(x, opt=sv_2mortal(newRV_noinc((SV *)newHV())))
pdl *x
SV *opt
PPCODE:
HV *opt_hv = NULL;
if (!(SvROK(opt) && SvTYPE(opt_hv = (HV*)SvRV(opt)) == SVt_PVHV))
barf("Usage: $pdl->dog([\\%%opt])");
PDLDEBUG_f(printf("Core::dog calling ")); pdl_barf_if_error(pdl_make_physdims(x));
if (x->ndims <= 0) barf("dog: must have at least one dim");
SV **svp = hv_fetchs(opt_hv, "Break", 0);
char dobreak = (svp && *svp && SvOK(*svp));
PDL_Indx *thesedims = x->dims, *theseincs = PDL_REPRINCS(x), ndimsm1 = x->ndims-1;
PDL_Indx i, howmany = x->dims[ndimsm1], thisoffs = 0, topinc = x->dimincs[ndimsm1];
EXTEND(SP, howmany);
lib/PDL/Image2D.pd view on Meta::CPAN
float fangle, imT bgval, int antialias);
EOF
pp_add_exported('','rotnewsz');
pp_addxs('
void
rotnewsz(m,n,angle)
int m
int n
float angle
PPCODE:
PDL_Indx newcols, newrows;
if (getnewsize(m,n,angle,&newcols,&newrows) != 0)
croak("wrong angle (should be between -90 and +90)");
EXTEND(sp,2);
PUSHs(sv_2mortal(newSVnv(newcols)));
PUSHs(sv_2mortal(newSVnv(newrows)));
');
pp_def('rot2d',
lib/PDL/PP.pm view on Meta::CPAN
croak("Usage: ${main::PDLOBJ}::$name(@{[
join ",", map exists $otherdefaults->{$_} ? "$_=$otherdefaults->{$_}" :
$out{$_} || $other_out{$_} ? "[$_]" : $_, @inargs
]}) (you may leave [outputs] and values with =defaults out of list)");}
unless $only_one || $argorder || ($nmaxonstack == keys(%valid_itemcounts) + $xs_arg_cnt);
my $preamble = @preinit ? qq[\n PREINIT:@{[join "\n ", "", @preinit]}\n INPUT:\n] : '';
join '', qq[
\nvoid
pdl_run_$name(@{[join ', ', @xsargs]})$svdecls
$preamble@{[join "\n ", "", @inputdecls]}
PPCODE:
], map "$_\n", $argcode;
}),
# globalnew implies internal usage, not XS
PDL::PP::Rule::Returns->new("VarArgsXSReturn","GlobalNew",undef),
PDL::PP::Rule->new("FixArgsXSOtherOutDeclSV",
["SignatureObj"],
"Generate XS to declare SVs for output OtherPars",
sub {
my ($sig) = @_;
( run in 1.901 second using v1.01-cache-2.11-cpan-5511b514fd6 )