X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree.h;h=dd1259eb10511d028bb2f8e881f64ec4362f04ac;hb=a2625dad3e0b32cd0a8ceee350aef39e8412e5b0;hp=b93caf2cef4c9221da05cb0649e21b6fb56ae716;hpb=0bf9688e2615a9fc07860c5762240e4ce26ee5d3;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_sequence/static_sequence_wvtree.h b/libcds/src/static_sequence/static_sequence_wvtree.h index b93caf2..dd1259e 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.h +++ b/libcds/src/static_sequence/static_sequence_wvtree.h @@ -1,6 +1,27 @@ - +/* static_sequence_wvtree.h + * Copyright (C) 2008, Francisco Claude, all rights reserved. + * + * static_sequence_wvtree definition + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + #ifndef STATIC_SEQUENCE_WVTREE_H #define STATIC_SEQUENCE_WVTREE_H + #include #include #include @@ -13,23 +34,32 @@ using namespace std; +/** Wavelet tree implementation using pointers. + * + * @author Francisco Claude + */ class static_sequence_wvtree : public static_sequence { public: /** Builds a Wavelet Tree for the string * pointed by symbols assuming its length - * equals n and the test flag allows to set - * if the structure must be tested for - * correctness after being created (this is very expensive). */ + * equals n */ static_sequence_wvtree(uint * symbols, uint n, wt_coder * coder, static_bitsequence_builder * bmb, alphabet_mapper * am); + static_sequence_wvtree(uchar * symbols, uint n, wt_coder * coder, static_bitsequence_builder * bmb, alphabet_mapper * am); + virtual ~static_sequence_wvtree(); virtual uint rank(uint symbol, uint pos); + virtual uint rankLessThan(uint &symbol, uint pos); virtual uint select(uint symbol, uint i); virtual uint access(uint pos); + virtual uint access(uint pos, uint &rank) + { + return root->access(pos, rank); + } virtual uint count(uint s); @@ -37,6 +67,7 @@ class static_sequence_wvtree : public static_sequence { virtual uint save(FILE * fp); static static_sequence_wvtree * load(FILE *fp); + protected: static_sequence_wvtree();