view 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 source

#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