Debug swcsa
[SXSI/TextCollection.git] / ResultSet.h
1 // Dynamic result set class
2 // Originally by Gonzalo Navarro
3
4 #ifndef _RESULTSET_H_
5 #define _RESULTSET_H_
6
7 namespace SXSI
8 {
9
10 #ifndef ulong
11 typedef unsigned long ulong;
12 #endif
13
14 class ResultSet {
15 private:
16     ulong n, lgn;
17     ulong *tree;
18     ulong lg(ulong);
19
20     ulong conv (ulong p, ulong n, ulong lgn);
21     ulong unconv (ulong p, ulong n, ulong lgn);
22     ulong clearRangeLeft (ulong p1, ulong n, ulong pos, ulong pot);
23     ulong clearRangeRight (ulong p2, ulong n, ulong pos, ulong pot);
24     ulong clearBoth (ulong n, ulong p1, ulong p2, ulong pos, ulong pot);
25
26     ulong nextSmallest (ulong n, ulong pos, ulong pot);
27     ulong nextLarger (ulong n, ulong p, ulong pos, ulong pot);
28
29     void prnspace (ulong k);
30 public:
31     // creates empty results data structure for n nodes numbered 0..n-1
32     ResultSet(ulong n);
33     ~ResultSet();
34
35     // returns 0/1 telling whether result p is not/is present in R
36     bool get(ulong p);
37
38     // inserts result p into R
39     void set(ulong p);
40
41     // clears all results p1..p2 in R
42     void clearRange (ulong p1, ulong p2);
43     // clears all results
44     void clear();
45
46     // returns pos of next(p) in R, or -1 if none
47     ulong nextResult (ulong p);
48
49 };
50
51 }
52
53 #endif // _RESULTSET_H_