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]

Reply via email to