Fix makefile to use $@ as output file instead of hardcoded name.
[SXSI/libbp.git] / darray.h
1 #ifndef DARRAY_H_
2 #define DARRAY_H_
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 typedef unsigned char byte;
9 typedef unsigned short word;
10 typedef unsigned int dword;
11
12 #define OPT_NO_RANK (1<<30)
13
14
15 typedef dword pb;
16
17 #define logD 5
18 #define D (1<<logD)
19
20 #define logR 16
21 #define R1 (1<<logR)
22 #define logRR 10
23 //#define logRR 8
24 #define RR (1<<logRR)
25 #define logRRR 7
26 #define RRR (1<<logRRR)
27
28 typedef struct {
29   int n,m;
30   int size;
31   pb *buf;
32   dword *lp;
33   dword *sl;
34   word *ss;
35   dword *p;
36
37   dword *rl;
38   word *rm;
39   byte *rs;
40
41   int idx_size;
42 } darray;
43
44 int setbit(pb *B, int i,int x);
45 int setbits(pb *B, int i, int d, int x);
46 int getbit(pb *B, int i);
47 dword getbits(pb *B, int i, int d);
48 //unsigned int popcount(pb x);
49
50 int darray_construct(darray *da, int n, pb *buf,int opt);
51 int darray_select(darray *da, int i,int f);
52 int darray_rank(darray *da, int i);
53 int darray_pat_construct(darray *da, int n, pb *buf, int k, pb pat, int opt);
54 int darray_pat_select(darray *da, int i, pb (*getpat)(pb *));
55 int darray_pat_rank(darray *da, int i, pb (*getpat)(pb *));
56
57 int darray_select_bsearch(darray *da, int i, pb (*getpat)(pb *));
58
59 // Added by Diego Arroyuelo
60 void destroyDarray(darray *da);
61
62 #ifdef __cplusplus
63 }
64 #endif
65
66
67 #endif