Mercurial > dedupe
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HuffmanSet.hpp Wed Sep 05 21:54:53 2012 +0200 @@ -0,0 +1,39 @@ +#ifndef HUFFMANSET_HPP +#define HUFFMANSET_HPP + +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QBitArray> + +#include "BitDecoder.hpp" + +class HuffmanSet { +public: + typedef uint key_t; + +private: + QMap<key_t, QString> newStrings; + QMap<key_t, QBitArray> map; + QMap<QString, QBitArray> encoder; + uint cutoff; + uint numInserts; + BitDecoder* lut; + + +public: + HuffmanSet(); + void setCutoff(uint cutoff); + static QStringList chunks(const QString& str); + BitDecoder* createLut(const QMap<QString, uint>& freqTable); + QString decode(const QBitArray& bits) const; + static QBitArray encode(const QString& string, const QMap<QString, QBitArray>& encoder); + 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
