/*
* This file was generated automatically by xsubpp version 1.935 from the
* contents of Test1.xs. Don't edit this file, edit Test1.xs instead.
*
* ANY CHANGES MADE HERE WILL BE LOST!
*
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#ifdef __cplusplus
}
#endif
XS(XS_produce_create)
{
dXSARGS;
if (items != 1)
croak("Usage: produce::create(nitems)");
{
int nitems = (int)SvIV(ST(0));
double * RETVAL;
double *a;
int i;
a = (double *) malloc(nitems*sizeof(double));
for (i = 0; i < nitems; i++)
a[i] = drand48();
RETVAL = a;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "doublePtr", (void*)RETVAL);
}
XSRETURN(1);
}
XS(XS_produce_print_array)
{
dXSARGS;
if (items != 2)
croak("Usage: produce::print_array(a,nitems)");
{
double * a;
int nitems = (int)SvIV(ST(1));
if (sv_isa(ST(0), "doublePtr")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
a = (double *) tmp;
}
else
croak("a is not of type doublePtr");
{
int i;
for (i = 0; i < nitems; i++)
printf("a[%d] = %g\n", i,a[i]);
}
}
XSRETURN(1);
}
#ifdef __cplusplus
extern "C"
#endif
XS(boot_produce)
{
dXSARGS;
char* file = __FILE__;
XS_VERSION_BOOTCHECK ;
newXS("produce::create", XS_produce_create, file);
newXS("produce::print_array", XS_produce_print_array, file);
ST(0) = &sv_yes;
XSRETURN(1);
}
syntax highlighted by Code2HTML, v. 0.9.1