Uncompressed WT with ArrayDoc
[SXSI/TextCollection.git] / ArrayDoc.h
diff --git a/ArrayDoc.h b/ArrayDoc.h
new file mode 100644 (file)
index 0000000..87cff98
--- /dev/null
@@ -0,0 +1,77 @@
+
+#ifndef _ARRAYDOC_H_
+#define _ARRAYDOC_H_
+
+// TODO add includes
+
+namespace SXSI 
+{
+
+class ArrayDoc {
+public:
+    ArrayDoc(BlockArray *input)
+        : data(input)
+    {
+
+    }
+    ArrayDoc(FILE *fp)
+        : data(0)
+    {
+        data = new BlockArray(fp);
+    }
+
+    ~ArrayDoc()
+    {
+        delete data;
+    }
+
+    void save(FILE *fp)
+    {
+        data->Save(fp);
+    }
+    
+    inline uint access(uint i)
+    {
+        return (*data)[i];
+    }
+    inline vector<int> accessAll(uint i, uint j)
+    {
+        vector<int> res;
+        res.reserve(j-i+1);
+
+        for (; i <= j; ++i)
+            res.push_back((*data)[i]);
+
+        return res;
+    }
+    
+    vector<int> access(uint i, uint j, uint min, uint max)
+    {
+        vector<int> res;
+        res.reserve(j-i+1);
+
+        for (; i <= j; ++i)
+            if ((*data)[i] >= min && (*data)[i] <= max)
+                res.push_back((*data)[i]);
+
+        return res;
+    }
+    
+
+    uint count(uint i, uint j, uint min, uint max)
+    {
+        uint c = 0;
+        for (; i <= j; ++i)
+            if ((*data)[i] >= min && (*data)[i] <= max)
+                ++c;
+        return c;
+    }
+    
+    
+private:
+    BlockArray *data;
+};
+
+};
+
+#endif