Data-KDTree-Shared

 view release on metacpan or  search on metacpan

Shared.xs  view on Meta::CPAN

    RETVAL

void
knn(self, coords, m)
    SV *self
    SV *coords
    UV m
  PREINIT:
    EXTRACT(self);
    double buf[KD_MAX_DIMS];
  PPCODE:
    kd_read_point(aTHX_ h, coords, buf, "knn");
    REEXTRACT(self);   /* kd_read_point ran arbitrary Perl */
    {
        KdRes *res = NULL;
        uint64_t got = 0, i;
        if (m > h->capacity) m = h->capacity;   /* at most all points */
        if (m) { Newx(res, (size_t)m, KdRes); SAVEFREEPV(res); }   /* alloc BEFORE the lock */
        {
            int wr = kd_query_lock(h);
            got = m ? kd_knn_locked(h, buf, m, res) : 0;

Shared.xs  view on Meta::CPAN

    }

void
range(self, lo, hi)
    SV *self
    SV *lo
    SV *hi
  PREINIT:
    EXTRACT(self);
    double blo[KD_MAX_DIMS], bhi[KD_MAX_DIMS];
  PPCODE:
    kd_read_point(aTHX_ h, lo, blo, "range");
    REEXTRACT(self);   /* kd_read_point ran arbitrary Perl */
    kd_read_point(aTHX_ h, hi, bhi, "range");
    REEXTRACT(self);   /* kd_read_point ran arbitrary Perl */
    {
        uint64_t *ids = NULL, got = 0, i, cap = h->capacity;
        if (cap) { Newx(ids, (size_t)cap, uint64_t); SAVEFREEPV(ids); }   /* alloc BEFORE the lock */
        {
            int wr = kd_query_lock(h);
            got = cap ? kd_range_locked(h, blo, bhi, ids, cap) : 0;

Shared.xs  view on Meta::CPAN

    }

void
radius(self, coords, r)
    SV *self
    SV *coords
    double r
  PREINIT:
    EXTRACT(self);
    double buf[KD_MAX_DIMS];
  PPCODE:
    if (r < 0) croak("Data::KDTree::Shared->radius: radius must be >= 0");
    kd_read_point(aTHX_ h, coords, buf, "radius");
    REEXTRACT(self);   /* kd_read_point ran arbitrary Perl */
    {
        KdRes *res = NULL;
        uint64_t got = 0, i, cap = h->capacity;
        if (cap) { Newx(res, (size_t)cap, KdRes); SAVEFREEPV(res); }   /* alloc BEFORE the lock */
        {
            int wr = kd_query_lock(h);
            got = cap ? kd_radius_locked(h, buf, r, res, cap) : 0;



( run in 0.676 second using v1.01-cache-2.11-cpan-92ad3014f07 )