My Project
 
Loading...
Searching...
No Matches
HuffmanEncoder.hpp
Go to the documentation of this file.
1
5
6#ifndef HUFFMANENCODER_HPP
7#define HUFFMANENCODER_HPP
8
10#include <bitset>
11#include <iostream>
12#include <stdint.h>
13#include <vector>
14#include <fstream>
15
16using namespace std;
17
18class HuffmanTree;
19
25{
29 vector<u_int32_t> buffer;
30
34 uint8_t space_left;
35
39 ofstream outFile;
40
45
49 void writeHeader();
50
54 void writeMapToBinary();
55
59 void writeEncodedString();
60
65 void insertToBuffer(const bitset<32> &code);
66
67public:
73 HuffmanEncoder(const string &fn, const HuffmanTree *root);
74
79 void encodeToFile(const vector<uint8_t> str);
80
85 void encodeToFile(const string &fn);
86};
87
88#endif // HUFFMANENCODER_HPP
uint8_t space_left
Indicates the remaining unused bits in the current buffer element.
Definition HuffmanEncoder.hpp:34
const HuffmanTree * tree
Pointer to the Huffman tree used for encoding.
Definition HuffmanEncoder.hpp:44
HuffmanEncoder(const string &fn, const HuffmanTree *root)
Constructs a HuffmanEncoder with output file and tree reference.
Definition HuffmanEncoder.cpp:83
void writeHeader()
Writes the header of the encoded file, including code map sizes and padding info.
Definition HuffmanEncoder.cpp:5
void writeEncodedString()
Encodes the string using the Huffman tree and writes the resulting bitstream.
Definition HuffmanEncoder.cpp:50
void insertToBuffer(const bitset< 32 > &code)
Inserts a 32-bit code into the internal buffer, managing space and alignment.
Definition HuffmanEncoder.cpp:130
vector< u_int32_t > buffer
A buffer that stores 32-bit chunks of the encoded bitstream.
Definition HuffmanEncoder.hpp:29
void writeMapToBinary()
Serializes the Huffman code maps (8b/16b/32b) to the output file in binary format.
Definition HuffmanEncoder.cpp:16
ofstream outFile
Output file stream to which encoded data is written.
Definition HuffmanEncoder.hpp:39
void encodeToFile(const vector< uint8_t > str)
Encodes a byte vector and writes it to the output file.
Definition HuffmanEncoder.cpp:91
Constructs and manages a Huffman tree for encoding.
Definition Huffman.hpp:94