Mercurial > dedupe
comparison HuffmanSet.hpp @ 55:19b2a2d98788
Use define to multiplex between different types of decoders.
Expand the API.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 13 Sep 2012 23:47:29 +0200 |
| parents | f8d0ea827db3 |
| children | e5fa379d4030 |
comparison
equal
deleted
inserted
replaced
| 54:f339499ecd79 | 55:19b2a2d98788 |
|---|---|
| 8 #include "BitArray.hpp" | 8 #include "BitArray.hpp" |
| 9 | 9 |
| 10 class BitDecoder; | 10 class BitDecoder; |
| 11 class FastBitDecoder; | 11 class FastBitDecoder; |
| 12 | 12 |
| 13 #define FASTENCODE 1 | |
| 14 | |
| 13 class HuffmanSet { | 15 class HuffmanSet { |
| 14 public: | 16 public: |
| 15 typedef uint key_t; | 17 typedef uint key_t; |
| 16 | 18 |
| 17 private: | 19 private: |
| 20 uint cutoff; | |
| 21 uint numInserts; | |
| 22 bool autoRebuild; | |
| 23 | |
| 18 QMap<key_t, QString> newStrings; | 24 QMap<key_t, QString> newStrings; |
| 19 QMap<key_t, BitArray> map; | 25 QMap<key_t, BitArray> map; |
| 20 QMap<QString, BitArray> encoder; | 26 QMap<QString, BitArray> encoder; |
| 21 uint cutoff; | 27 #if FASTENCODE |
| 22 uint numInserts; | 28 FastBitDecoder* lut; |
| 23 //FastBitDecoder* lut; | 29 #else |
| 24 BitDecoder* lut; | 30 BitDecoder* lut; |
| 31 #endif //FASTENCODE | |
| 25 | 32 |
| 26 | 33 |
| 27 public: | 34 public: |
| 28 HuffmanSet(); | 35 HuffmanSet(); |
| 36 ~HuffmanSet(); | |
| 29 void setCutoff(uint cutoff); | 37 void setCutoff(uint cutoff); |
| 38 void setAutoRebuild(bool); | |
| 30 static QStringList chunks(const QString& str); | 39 static QStringList chunks(const QString& str); |
| 31 BitDecoder* createLut(const QMap<QString, uint>& freqTable); | 40 BitDecoder* createLut(const QMap<QString, uint>& freqTable); |
| 32 QString decode(const BitArray& bits) const; | 41 QString decode(const BitArray& bits) const; |
| 33 static BitArray encode(const QString& string, const QMap<QString, BitArray>& encoder); | 42 static BitArray encode(const QString& string, |
| 43 const QMap<QString, BitArray>& encoder); | |
| 44 void generateFreqTable(QMap<QString, uint>& freqTable) const; | |
| 45 QMap<QString, uint> generateFreqTable() const; | |
| 34 void rebuild(); | 46 void rebuild(); |
| 35 bool contains(key_t key) const; | 47 bool contains(key_t key) const; |
| 36 uint totalElements() const; | 48 uint totalElements() const; |
| 37 key_t hash(const QString& str); | 49 key_t hash(const QString& str); |
| 38 key_t insert(const QString& str); | 50 key_t insert(const QString& str); |
