annotate HuffmanSet.hpp @ 74:19d8825ec501

Add define for code that can never be reached. To avoid the line being counted.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Sat, 16 Feb 2013 15:26:27 +0100
parents e5fa379d4030
children
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
61
e5fa379d4030 Clean up headers.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 55
diff changeset
6 class BitArray;
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
7 class BitDecoder;
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
8 class FastBitDecoder;
61
e5fa379d4030 Clean up headers.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 55
diff changeset
9 class QStringList;
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
10
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
11 #define FASTENCODE 1
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
12
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
13 class HuffmanSet {
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
14 public:
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
15 typedef uint key_t;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
16
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
17 private:
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
18 uint cutoff;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
19 uint numInserts;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
20 bool autoRebuild;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
21
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
22 QMap<key_t, QString> newStrings;
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
23 QMap<key_t, BitArray> map;
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
24 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
25 #if FASTENCODE
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
26 FastBitDecoder* lut;
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
27 #else
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
28 BitDecoder* lut;
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
29 #endif //FASTENCODE
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
30
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
31
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
32 public:
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
33 HuffmanSet();
55
19b2a2d98788 Use define to multiplex between different types of decoders.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 49
diff changeset
34 ~HuffmanSet();
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
35 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
36 void setAutoRebuild(bool);
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
37 static QStringList chunks(const QString& str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
38 BitDecoder* createLut(const QMap<QString, uint>& freqTable);
49
f8d0ea827db3 Use BitArray.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 40
diff changeset
39 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
40 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
41 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
42 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
43 QMap<QString, uint> generateFreqTable() const;
21
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
44 void rebuild();
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
45 bool contains(key_t key) const;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
46 uint totalElements() const;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
47 key_t hash(const QString& str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
48 key_t insert(const QString& str);
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
49 QString value(key_t key) const;
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
50 };
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
51
3bcdb8bb6914 Huffman representations.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents:
diff changeset
52 #endif //HUFFMANSET_HPP