Debug swcsa
[SXSI/TextCollection.git] / ArrayDoc.h
1
2 #ifndef _ARRAYDOC_H_
3 #define _ARRAYDOC_H_
4
5 // TODO add includes
6
7 namespace SXSI 
8 {
9
10 class ArrayDoc {
11 public:
12     ArrayDoc(BlockArray *input)
13         : data(input)
14     {
15
16     }
17     ArrayDoc(FILE *fp)
18         : data(0)
19     {
20         data = new BlockArray(fp);
21     }
22
23     ~ArrayDoc()
24     {
25         delete data;
26     }
27
28     void save(FILE *fp)
29     {
30         data->Save(fp);
31     }
32     
33     inline uint access(uint i)
34     {
35         return (*data)[i];
36     }
37     inline vector<int> accessAll(uint i, uint j)
38     {
39         vector<int> res;
40         res.reserve(j-i+1);
41
42         for (; i <= j; ++i)
43             res.push_back((*data)[i]);
44
45         return res;
46     }
47     
48     vector<int> access(uint i, uint j, uint min, uint max)
49     {
50         vector<int> res;
51         res.reserve(j-i+1);
52
53         for (; i <= j; ++i)
54             if ((*data)[i] >= min && (*data)[i] <= max)
55                 res.push_back((*data)[i]);
56
57         return res;
58     }
59     
60
61     uint count(uint i, uint j, uint min, uint max)
62     {
63         uint c = 0;
64         for (; i <= j; ++i)
65             if ((*data)[i] >= min && (*data)[i] <= max)
66                 ++c;
67         return c;
68     }
69     
70     
71 private:
72     BlockArray *data;
73 };
74
75 };
76
77 #endif