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 inline int bp_darray_rank(darray *da, int i)
49 r = da->rl[i>>logR] + da->rm[i_rr];
51 j = (i_rrr) & (RR/RRR-1);
52 offset = i_rr << (logRR-logRRR);
53 buff = &(da->rs[offset-1]);
59 p = da->buf + ((i_rrr)<<(logRRR-logD));
65 r += popcount(*p >> (D-1-j));
70 darray * bp_darray_pat_construct(int n, pb *buf, int k, pb pat, int opt);
71 int bp_darray_pat_select(darray *da, int i, pb (*getpat)(pb *));
72 int bp_darray_pat_rank(darray *da, int i, pb (*getpat)(pb *));
74 int bp_darray_select_bsearch(darray *da, int i, pb (*getpat)(pb *));