Реализовать класс RleCodec, простое сжатие/разжатие данных с помощью алгоритма RLE.
Простой класс, по сути FIFO'шка, принимающая байты данных, и выдающая по запросу сжатые байты потока. Аналогично в обратном направлении.
Реализовать класс RleCodec .
public и protected методы классов фиксированы, кроме спецификаторов.
Т.е. нельзя менять названия методов, а также типы и количество аргументов.
НО в этих методах отсутствуют спецификаторы const и static, которые были удалены намеренно. Их необходимо вернуть на место.
private поля и private методы можно добавлять в класс RleCodec.
//RleCodec.hpp
class RleCodec {
public:
RleCodec();
RleCodec(size_t size);
~RleCodec();
RleCodec(const RleCodec&) = delete;
RleCodec& operator=(const RleCodec&) = delete;
size_t push_compress(const char* data, size_t size);
size_t pop_compress(const char* buff, size_t size);
size_t push_decompress(const char* data, size_t size);
size_t pop_decompress(const char* buff, size_t size);
protected:
const size_t c_default_size = 1024;
};
RleCodec() -- Конструктор по умолчанию, задаёт длину буфера по умолчанию.RleCodec(size_t size) -- Конструктор задающий длину буфера.~RleCodec() -- деструктор.RleCodec(const RleCodec& val) = delete -- запрет копирующего конструктора.RleCodec& operator=(const RleCodec&) = delete -- запрет оператора присваивания
size_t push_compress(const char* data, size_t size) -- передать (протолкнуть) на сжатие очередную порцию данных.
Читает из входного буфера данные, сжимает их, записывает сжатые данные в пустое место внутреннего буфера.
Возвращает количество забранных из буфера байт.
Если задан размер внутреннего буфера равный нулю(0), то ничего не делает и возвращает ноль(0).
size_t pop_compress(const char* buff, size_t size) -- забрать (вытолкнуть) сжатые данные из буфера.
Копирует данные из внутреннего буфера.
Возвращает количество записанных в буфер байт.
size_t push_decompress(const char* data, size_t size) -- передать (протолкнуть) на разжатие очередную порцию данных.
Читает из входного буфера данные, разжимает их, записывает разжатые данные в пустое место внутреннего буфера.
Возвращает количество забранных из буфера байт.
Если задан размер внутреннего буфера равный нулю(0), то ничего не делает и возвращает ноль(0).
size_t pop_decompress(const char* buff, size_t size) -- забрать (вытолкнуть) разжатые данные из буфера.
Копирует данные из внутреннего буфера.
Возвращает количество записанных в буфер байт.
const size_t c_default_size = 1024 -- Длина внутреннего буфера по умолчанию.