Math-ConvexHull-MonotoneChain

 view release on metacpan or  search on metacpan

MonotoneChain.xs  view on Meta::CPAN

    AV* points
  PREINIT:
    AV* hull_points;
    SSize_t out_hullsize, npoints, arylen, i;
    point_t* cpoints;
    point_ptr_t* out_hull;
    AV* inner_av;
    AV* out_av;
    SV** elemptr;
    SV* elem;
  PPCODE:
    npoints = av_len(points)+1;
    if (npoints <= 2) {
      out_av = newAV();
      av_fill(out_av, npoints-1);
      for (i = 0; i < npoints; ++i) {
        elemptr = av_fetch(points, i, 0);
        av_store(out_av, i, newSVsv(*elemptr));
      }
      XPUSHs(sv_2mortal(newRV_noinc((SV*)out_av)));
      XSRETURN(1);



( run in 0.361 second using v1.01-cache-2.11-cpan-5511b514fd6 )