Math-ematica
view release on metacpan or search on metacpan
double
MLGetDouble(link)
MLINK link
CODE:
if (!MLGetDouble(link, &RETVAL)) XSRETURN_UNDEF;
OUTPUT:
RETVAL
kcharp_ct
MLGetString(link)
MLINK link
CODE:
if (!MLGetString(link, &RETVAL)) XSRETURN_UNDEF;
OUTPUT:
RETVAL
CLEANUP:
MLDisownString(link, RETVAL);
SV *
MLGetByteString(link, ...)
MLINK link
CODE:
{
long spec = 0;
const unsigned char *s;
long n;
if (items > 1) {
spec = SvNV(ST(1));
}
if (!MLGetByteString(link, &s, &n, spec)) {
XSRETURN_UNDEF;
} else {
RETVAL = newSVpvn(s, n);
MLDisownByteString(link, s, n);
}
}
OUTPUT:
RETVAL
SV *
MLGetSymbol(link)
MLINK link
PREINIT:
kcharp_ct symname;
CODE:
if (!MLGetSymbol(link, &symname)) XSRETURN_UNDEF;
RETVAL = make_symbol((char *)symname);
OUTPUT:
RETVAL
CLEANUP:
MLDisownSymbol(link, symname);
void
MLGetFunction(link)
MLINK link
PREINIT:
char * name;
long_st nargs;
SV * symbol;
PPCODE:
if (!MLGetFunction(link, (kcharpp_ct) &name, &nargs)) {
XSRETURN_UNDEF;
}
symbol = make_symbol(name);
MLDisownSymbol(link, name);
XPUSHs(sv_2mortal(symbol));
if (GIMME_V == G_ARRAY) {
XPUSHs(sv_2mortal(newSViv(nargs)));
XSRETURN(2);
} else {
XSRETURN(1);
}
void
MLGetRealList(link)
MLINK link
PREINIT:
doublep_nt array;
long_st len;
long_st i;
PPCODE:
if (!MLGetRealList(link, &array, &len)) {
XSRETURN_UNDEF;
}
EXTEND(sp, len);
for (i=0;i<len;i++) {
PUSHs(sv_2mortal(newSVnv(array[i])));
}
MLDisownRealList(link, array, len);
XSRETURN(len);
void
symbol(name)
SV * name
PPCODE:
ST(0) = sv_2mortal(newRV_noinc(newSVsv(name)));
sv_bless(ST(0), gv_stashpv(SYMNAME,1));
XSRETURN(1);
mlapi_result
PutToken(link, elem, ...)
MLINK link
SV * elem
CODE:
if (SvROK(elem)) {
if (sv_isobject(elem) && sv_isa(elem, SYMNAME)) {
if (items > 2) {
RETVAL = MLPutFunction(link, SvPV(SvRV(elem), PL_na), SvIV(ST(2)));
} else {
RETVAL = MLPutSymbol(link, SvPV(SvRV(elem), PL_na));
}
} else {
warn( "Math::ematica::PutScalar() -- elem is not a Math::ematica::symbol" );
XSRETURN_UNDEF;
}
} else if (SvIOKp(elem)) {
RETVAL = MLPutInteger(link, SvIV(elem));
} else if (SvNOKp(elem)) {
RETVAL = MLPutDouble(link, SvNV(elem));
} else if (SvPOKp(elem)) {
RETVAL = MLPutString(link, SvPV(elem, PL_na));
} else {
RETVAL = 0;
}
OUTPUT:
RETVAL
SV *
read_packet(link)
MLINK link
CODE:
if ((RETVAL = read_packet(link)) == NULL) {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
( run in 2.113 seconds using v1.01-cache-2.11-cpan-71847e10f99 )