X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree.cpp;fp=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree.cpp;h=ef504bdbfaa971cf3e78210601f42c62edd27298;hb=816fe5fd2e5c2ef306227c6870a45b026b923f2e;hp=baabf02ffb699af75bd645acdf28a22fe9945d07;hpb=79d19dd14db25dd04e9fc9e0137ce9e8c6e4744f;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_sequence/static_sequence_wvtree.cpp b/libcds/src/static_sequence/static_sequence_wvtree.cpp index baabf02..ef504bd 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.cpp +++ b/libcds/src/static_sequence/static_sequence_wvtree.cpp @@ -81,6 +81,34 @@ uint static_sequence_wvtree::access(uint pos) { return am->unmap(root->access(pos)); } +vector static_sequence_wvtree::access(uint i, uint j, uint min, uint max) +{ + vector resultSet; + root->access(resultSet, i, j, am->map(min), am->map(max), c->depth()-1, 0); + for (vector::iterator it = resultSet.begin(); it != resultSet.end(); ++it) + *it = am->unmap(*it); + return resultSet; +} + +vector static_sequence_wvtree::accessAll(uint i, uint j) +{ + vector resultSet; + if (j > i) + return resultSet; + + resultSet.reserve(j-i+1); + root->access(resultSet, i, j); + for (vector::iterator it = resultSet.begin(); it != resultSet.end(); ++it) + *it = am->unmap(*it); + return resultSet; +} + +uint static_sequence_wvtree::count(uint i, uint j, uint min, uint max) +{ + return root->access(i, j, am->map(min), am->map(max), c->depth()-1, 0); +} + + uint static_sequence_wvtree::size() { /*cout << "WT: " << root->size() << endl; cout << "Coder: " << c->size() << endl;