X-Git-Url: http://git.nguyen.vg/gitweb/?p=SXSI%2Flibbp.git;a=blobdiff_plain;f=bp-darray.h;fp=bp-darray.h;h=23d44a4c6bdfb601841bcbec164f8da5255d980e;hp=0000000000000000000000000000000000000000;hb=45ff7a2260f890f6ef6a7b56f654ffa1a057a7e7;hpb=b3b328570c63aea4d9d15854eec9f7434cc9fe0d diff --git a/bp-darray.h b/bp-darray.h new file mode 100644 index 0000000..23d44a4 --- /dev/null +++ b/bp-darray.h @@ -0,0 +1,53 @@ +#ifndef BP_DARRAY_H_ +#define BP_DARRAY_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned char byte; +typedef unsigned short word; +typedef unsigned int dword; + +#define OPT_NO_RANK (1<<30) + + +typedef dword pb; + + +typedef struct { + int n,m; + int size; + pb *buf; + dword *lp; + dword *sl; + word *ss; + dword *p; + + dword *rl; + word *rm; + byte *rs; + + int idx_size; +} darray; + + +darray * bp_darray_construct(int n, pb *buf,int opt); +void bp_darray_free(darray *da); + +int bp_darray_select(darray *da, int i,int f); +int bp_darray_rank(darray *da, int i); +darray * bp_darray_pat_construct(int n, pb *buf, int k, pb pat, int opt); +int bp_darray_pat_select(darray *da, int i, pb (*getpat)(pb *)); +int bp_darray_pat_rank(darray *da, int i, pb (*getpat)(pb *)); + +int bp_darray_select_bsearch(darray *da, int i, pb (*getpat)(pb *)); + + + +#ifdef __cplusplus +} +#endif + + +#endif