1 /* static_sequence_wvtree.h
2 * Copyright (C) 2008, Francisco Claude, all rights reserved.
4 * static_sequence_wvtree definition
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #ifndef STATIC_SEQUENCE_WVTREE_H
23 #define STATIC_SEQUENCE_WVTREE_H
28 #include <static_bitsequence.h>
29 #include <static_bitsequence_builder.h>
30 #include <wt_node_internal.h>
31 #include <wt_coder_binary.h>
32 #include <alphabet_mapper.h>
33 #include <static_sequence.h>
37 /** Wavelet tree implementation using pointers.
39 * @author Francisco Claude
41 class static_sequence_wvtree : public static_sequence {
44 /** Builds a Wavelet Tree for the string
45 * pointed by symbols assuming its length
47 static_sequence_wvtree(uint * symbols, uint n, wt_coder * coder, static_bitsequence_builder * bmb, alphabet_mapper * am);
49 static_sequence_wvtree(uchar * symbols, uint n, wt_coder * coder, static_bitsequence_builder * bmb, alphabet_mapper * am);
51 virtual ~static_sequence_wvtree();
53 virtual uint rank(uint symbol, uint pos);
55 virtual uint select(uint symbol, uint i);
57 virtual uint access(uint pos);
59 virtual uint count(uint s);
63 virtual uint save(FILE * fp);
64 static static_sequence_wvtree * load(FILE *fp);
68 static_sequence_wvtree();
73 //bitmap_builder * bmb;
75 /** Length of the string. */
78 /** Height of the Wavelet Tree. */
81 /** Flag for testing for correcteness. */
86 #endif /* _STATIC_SEQUENCE_WVTREE_H */