annotate HuffmanSet.hpp @ 60:60c1e0a2cacf

Fix compile problem.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Fri, 14 Sep 2012 20:23:45 +0200
parents 19b2a2d98788
children e5fa379d4030
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
1 #ifndef HUFFMANSET_HPP
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
2 #define HUFFMANSET_HPP
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
3
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
4 #include <QtCore/QMap>
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
5 #include <QtCore/QString>
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
6 #include <QtCore/QStringList>
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
7
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
8 #include "BitArray.hpp"
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
9
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
10 class BitDecoder;
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
11 class FastBitDecoder;
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
12
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
13 #define FASTENCODE 1
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
14
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
15 class HuffmanSet {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
16 public:
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
17 typedef uint key_t;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
18
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
19 private:
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
20 uint cutoff;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
21 uint numInserts;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
22 bool autoRebuild;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
23
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
24 QMap<key_t, QString> newStrings;
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
25 QMap<key_t, BitArray> map;
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
26 QMap<QString, BitArray> encoder;
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
27 #if FASTENCODE
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
28 FastBitDecoder* lut;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
29 #else
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
30 BitDecoder* lut;
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
31 #endif //FASTENCODE
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
32
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
33
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
34 public:
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
35 HuffmanSet();
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
36 ~HuffmanSet();
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
37 void setCutoff(uint cutoff);
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
38 void setAutoRebuild(bool);
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
39 static QStringList chunks(const QString& str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
40 BitDecoder* createLut(const QMap<QString, uint>& freqTable);
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
41 QString decode(const BitArray& bits) const;
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
42 static BitArray encode(const QString& string,
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
43 const QMap<QString, BitArray>& encoder);
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
44 void generateFreqTable(QMap<QString, uint>& freqTable) const;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
45 QMap<QString, uint> generateFreqTable() const;
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
46 void rebuild();
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
47 bool contains(key_t key) const;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
48 uint totalElements() const;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
49 key_t hash(const QString& str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
50 key_t insert(const QString& str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
51 QString value(key_t key) const;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
52 };
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
53
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
54 #endif //HUFFMANSET_HPP