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);
41 static int bp_darray_rank(darray *da, int i)
47 r = da->rl[i>>logR] + da->rm[i_rr];
49 j = (i_rrr) & (RR/RRR-1);
51 r += da->rs[((i_rr)<<(logRR-logRRR))+j-1];
55 p = da->buf + ((i_rrr)<<(logRRR-logD));
61 r += popcount(*p >> (D-1-j));
66 darray * bp_darray_pat_construct(int n, pb *buf, int k, pb pat, int opt);
67 int bp_darray_pat_select(darray *da, int i, pb (*getpat)(pb *));
68 int bp_darray_pat_rank(darray *da, int i, pb (*getpat)(pb *));
70 int bp_darray_select_bsearch(darray *da, int i, pb (*getpat)(pb *));