21 lines
470 B
C++
21 lines
470 B
C++
#pragma once
|
|
|
|
#include "RawTree.h"
|
|
|
|
#include <vector>
|
|
#include <unordered_map>
|
|
|
|
class HuffmanEncoder
|
|
{
|
|
using DataStream = std::vector<unsigned char>;
|
|
using CountPair = std::pair<unsigned char, unsigned>;
|
|
|
|
public:
|
|
void encode(const DataStream& stream);
|
|
|
|
void encode(const std::unordered_map<unsigned char, unsigned>& counts);
|
|
|
|
private:
|
|
void dumpTree(const RawTree<CountPair>& tree) const;
|
|
void dumpNode(RawNode<CountPair>* node, unsigned depth) const;
|
|
};
|