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.535 second using v1.01-cache-2.11-cpan-5511b514fd6 )