Mercurial > dedupe
view HuffmanSet.hpp @ 115:404795616b1e default tip
Added a lot of common files to ignore
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Sat, 25 Mar 2017 17:43:57 +0100 |
| parents | e5fa379d4030 |
| children |
line wrap: on
line source
#ifndef HUFFMANSET_HPP #define HUFFMANSET_HPP #include <QtCore/QMap> class BitArray; class BitDecoder; class FastBitDecoder; class QStringList; #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; #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); void generateFreqTable(QMap<QString, uint>& freqTable) const; QMap<QString, uint> generateFreqTable() const; void rebuild(); bool contains(key_t key) const; uint totalElements() const; key_t hash(const QString& str); key_t insert(const QString& str); QString value(key_t key) const; }; #endif //HUFFMANSET_HPP
