10 xrow_t*r = rfx_calloc(sizeof(xrow_t));
12 r->x = rfx_alloc(sizeof(r->x[0])*r->size);
16 void xrow_add(xrow_t*r, int32_t x)
18 if(r->num && r->lastx==x)
21 if(r->num >= r->size) {
23 r->x = rfx_realloc(r->x, sizeof(r->x[0])*r->size);
28 int compare_int32(const void*_i1,const void*_i2)
30 int32_t*i1 = (int32_t*)_i1;
31 int32_t*i2 = (int32_t*)_i2;
35 void xrow_sort(xrow_t*r)
39 qsort(r->x, r->num, sizeof(r->x[0]), compare_int32);
42 int32_t lastx=r->x[0];
43 for(t=1;t<r->num;t++) {
45 r->x[pos++] = lastx = r->x[t];
51 int xrow_find(xrow_t*r, int32_t x)
55 for(min=0, max=r->num, i=r->num/2, l=r->num; i != l; l=i, i=(min+max)/2) {
56 if(x < r->x[i]) max=i;
62 for(t=0;t<r->num;t++) {
72 char xrow_contains(xrow_t*r, int32_t x)
74 int pos = xrow_find(r,x) - 1;
75 return (pos>=0 && r->x[pos]==x);
78 void xrow_reset(xrow_t*r)
83 void xrow_dump(xrow_t*xrow, double gridsize)
85 fprintf(stderr, "x: ");
87 for(t=0;t<xrow->num;t++) {
89 fprintf(stderr, ", ");
90 fprintf(stderr, "%.2f", xrow->x[t] * gridsize);
92 fprintf(stderr, "\n");
95 void xrow_destroy(xrow_t*r)