9 typedef unsigned char byte;
10 typedef unsigned short word;
11 typedef unsigned int dword;
13 #define OPT_NO_RANK (1<<30)
36 darray * bp_darray_construct(int n, pb *buf,int opt);
37 void bp_darray_free(darray *da);
39 int bp_darray_select(darray *da, int i,int f);
40 static int bp_darray_rank(darray *da, int i)
46 r = da->rl[i>>logR] + da->rm[i_rr];
48 j = (i_rrr) & (RR/RRR-1);
50 r += da->rs[((i_rr)<<(logRR-logRRR))+j-1];
54 p = da->buf + ((i_rrr)<<(logRRR-logD));
60 r += popcount(*p >> (D-1-j));
65 darray * bp_darray_pat_construct(int n, pb *buf, int k, pb pat, int opt);
66 int bp_darray_pat_select(darray *da, int i, pb (*getpat)(pb *));
67 int bp_darray_pat_rank(darray *da, int i, pb (*getpat)(pb *));
69 int bp_darray_select_bsearch(darray *da, int i, pb (*getpat)(pb *));