X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=ArrayDoc.h;fp=ArrayDoc.h;h=87cff985090d0b48a680d8471d65db9f33e6eba7;hb=6048d243439020acd3b5acf8654641cb9cef8e27;hp=0000000000000000000000000000000000000000;hpb=83c839dd1e7417fbd51cd4a3483f145e47863efb;p=SXSI%2FTextCollection.git diff --git a/ArrayDoc.h b/ArrayDoc.h new file mode 100644 index 0000000..87cff98 --- /dev/null +++ b/ArrayDoc.h @@ -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 accessAll(uint i, uint j) + { + vector res; + res.reserve(j-i+1); + + for (; i <= j; ++i) + res.push_back((*data)[i]); + + return res; + } + + vector access(uint i, uint j, uint min, uint max) + { + vector 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