Mercurial > dedupe
diff 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 |
line wrap: on
line diff
--- a/HuffmanSet.hpp Thu Sep 13 23:40:46 2012 +0200 +++ b/HuffmanSet.hpp Thu Sep 13 23:47:29 2012 +0200 @@ -10,27 +10,39 @@ class BitDecoder; class FastBitDecoder; +#define FASTENCODE 1 + class HuffmanSet { public: typedef uint key_t; private: + uint cutoff; + uint numInserts; + bool autoRebuild; + QMap<key_t, QString> newStrings; QMap<key_t, BitArray> map; QMap<QString, BitArray> encoder; - uint cutoff; - uint numInserts; - //FastBitDecoder* lut; +#if FASTENCODE + FastBitDecoder* lut; +#else BitDecoder* lut; +#endif //FASTENCODE public: HuffmanSet(); + ~HuffmanSet(); void setCutoff(uint cutoff); + void setAutoRebuild(bool); static QStringList chunks(const QString& str); BitDecoder* createLut(const QMap<QString, uint>& freqTable); QString decode(const BitArray& bits) const; - static BitArray encode(const QString& string, const QMap<QString, BitArray>& encoder); + static BitArray encode(const QString& string, + const QMap<QString, BitArray>& encoder); + void generateFreqTable(QMap<QString, uint>& freqTable) const; + QMap<QString, uint> generateFreqTable() const; void rebuild(); bool contains(key_t key) const; uint totalElements() const;
