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
)