I'm passing in [EMAIL PROTECTED],[EMAIL PROTECTED]
Here's my code:
Here is my call to the xs code from perl
@f1 = ( 0,0 , 0,100 , 100,100 , 100,0 );
@f2 = ( 10,40 , 10,50 , 90,50 , 90,40 );
@f3 = Laff::NotFigs([EMAIL PROTECTED],[EMAIL PROTECTED]);
print Dumper([EMAIL PROTECTED]);
my XS snippett
AV *
LaffNotFigs(l1,l2)
SV *l1
SV *l2
CODE:
{
int npts,i,j,npts1,npts2,num_figs,retcode,errcode;
xy_t pts1[5000],pts2[5000];
xy_t pts[4096],scratch[10000];
AV *avitem,*a1,*a2,*av;
if(!SvROK(l1) || !SvROK(l2))
{
croak("Laff::NotFigs( *FIG1, *FIG2 )");
}
av = (AV*) SvRV(l1);
for (i = 0,npts1 = 0; i < av_len(av); i++,npts1++)
{
pts1[npts1].x = SvIV(*av_fetch(av,i,0));
i++;
pts1[npts1].y = SvIV(*av_fetch(av,i,0));
}
fprintf(stderr,"npts1 = %d\n",npts1);
for (i = 0; i < npts1; i++) fprintf(stderr,"pts1[i] = %d,%d\n",pts1[i].x,pts1[i].y);
av = (AV*) SvRV(l2);
for (i = 0,npts2 = 0; i < av_len(av); i++,npts2++)
{
pts2[npts2].x = SvIV(*av_fetch(av,i,0));
i++;
pts2[npts2].y = SvIV(*av_fetch(av,i,0));
}
fprintf(stderr,"npts2 = %d\n",npts2);
for (i = 0; i < npts2; i++) fprintf(stderr,"pts2[i] = %d,%d\n",pts2[i].x,pts2[i].y);
XSRETURN_UNDEF;
Here is the output.
npts1 = 4
pts1[i] = 0,0
pts1[i] = 0,100
pts1[i] = 100,100
pts1[i] = 100,0
npts2 = 4
pts2[i] = 0,0
pts2[i] = 0,100
pts2[i] = 100,100
pts2[i] = 100,0
Why are pts1 and pts2 the same.
___ _ ____ ___ __ __
/ _ )(_) / /_ __ / _ \___ _/ /_/ /____ ___
/ _ / / / / // / / ___/ _ `/ __/ __/ _ \/ _ \
/____/_/_/_/\_, / /_/ \_,_/\__/\__/\___/_//_/
/___/
Texas Instruments ASIC Circuit Design Methodlogy Group
Dallas, Texas, 214-480-4455, [EMAIL PROTECTED]