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