view HuffmanSet.hpp @ 61:e5fa379d4030

Clean up headers.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Fri, 14 Sep 2012 20:41:35 +0200
parents 19b2a2d98788
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