0f79faef6fabf1d2e710145dab6a8bb6f0bb4e9c
[SXSI/XMLTree.git] / darray.h
1 typedef unsigned char byte;
2 typedef unsigned short word;
3 typedef unsigned int dword;
4
5 #define OPT_NO_RANK (1<<30)
6
7
8 typedef dword pb;
9
10 #define logD 5
11 #define D (1<<logD)
12
13 #define logR 16
14 #define R1 (1<<logR)
15 #define logRR 10
16 //#define logRR 8
17 #define RR (1<<logRR)
18 #define logRRR 7
19 #define RRR (1<<logRRR)
20
21 typedef struct {
22   int n,m;
23   int size;
24   pb *buf;
25   dword *lp;
26   dword *sl;
27   word *ss;
28   dword *p;
29
30   dword *rl;
31   word *rm;
32   byte *rs;
33
34   int idx_size;
35 } darray;
36
37 int setbit(pb *B, int i,int x);
38 int setbits(pb *B, int i, int d, int x);
39 int getbit(pb *B, int i);
40 dword getbits(pb *B, int i, int d);
41 unsigned int popcount(pb x);
42
43 int darray_construct(darray *da, int n, pb *buf,int opt);
44 int darray_select(darray *da, int i,int f);
45 int darray_rank(darray *da, int i);
46 int darray_pat_construct(darray *da, int n, pb *buf, int k, pb pat, int opt);
47 int darray_pat_select(darray *da, int i, pb (*getpat)(pb *));
48 int darray_pat_rank(darray *da, int i, pb (*getpat)(pb *));
49
50 int darray_select_bsearch(darray *da, int i, pb (*getpat)(pb *));
51
52 // Added by Diego Arroyuelo
53 void destroyDarray(darray *da);