comparison HuffmanSet.hpp @ 21:3bcdb8bb6914

Huffman representations.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Wed, 05 Sep 2012 21:54:53 +0200
parents
children f711ddb56ae7
comparison
equal deleted inserted replaced
20:754e12c927b3 21:3bcdb8bb6914
1 #ifndef HUFFMANSET_HPP
2 #define HUFFMANSET_HPP
3
4 #include <QtCore/QMap>
5 #include <QtCore/QString>
6 #include <QtCore/QStringList>
7 #include <QtCore/QBitArray>
8
9 #include "BitDecoder.hpp"
10
11 class HuffmanSet {
12 public:
13 typedef uint key_t;
14
15 private:
16 QMap<key_t, QString> newStrings;
17 QMap<key_t, QBitArray> map;
18 QMap<QString, QBitArray> encoder;
19 uint cutoff;
20 uint numInserts;
21 BitDecoder* lut;
22
23
24 public:
25 HuffmanSet();
26 void setCutoff(uint cutoff);
27 static QStringList chunks(const QString& str);
28 BitDecoder* createLut(const QMap<QString, uint>& freqTable);
29 QString decode(const QBitArray& bits) const;
30 static QBitArray encode(const QString& string, const QMap<QString, QBitArray>& encoder);
31 void rebuild();
32 bool contains(key_t key) const;
33 uint totalElements() const;
34 key_t hash(const QString& str);
35 key_t insert(const QString& str);
36 QString value(key_t key) const;
37 };
38
39 #endif //HUFFMANSET_HPP