diff HuffmanSet.hpp @ 55:19b2a2d98788

Use define to multiplex between different types of decoders. Expand the API.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Thu, 13 Sep 2012 23:47:29 +0200
parents f8d0ea827db3
children e5fa379d4030
line wrap: on
line diff
--- a/HuffmanSet.hpp	Thu Sep 13 23:40:46 2012 +0200
+++ b/HuffmanSet.hpp	Thu Sep 13 23:47:29 2012 +0200
@@ -10,27 +10,39 @@
 class BitDecoder;
 class FastBitDecoder;
 
+#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;
-  uint cutoff;
-  uint numInserts;
-  //FastBitDecoder* lut;
+#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);
+  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;