Open alexey-malov opened 4 years ago
[x] простые типы не имеет смысла передавать по ссылке
[x] Размер передавать незачем. Как eof встретится, так и закончите работу
[x] принимать лучше потоки istream& и ostream&, а не привязываться жёстко к файловым потокам
struct RLEChunk
{
char currentChar;
uint8_t counter = 0;
};
// обновляет чанк новым символом
// возвращает true в случае успеха
// может вызвать FluchChunk
bool PackNextChar(RLEChunk& chunk, char ch, ostream& output);
// Сбрасывает chunk в выходной поток и обнуляет счётчик
bool FlushChunk(RLEChunk& chunk, ostream& output);
bool ReadChunk(RLEChunk&, istream&)
и bool UnpackChunk(const RLEChunk&)
и упростите с их помощью цикл распаковки
bool TransformFile(const string& inputFileName, const string& outputFileName, const std::function<bool(istream&, ostream&)> transformer);
bool Pack(istream& input, ostream& output); bool Unpack(istream& input, ostream& output);
bool Foo(const Args& args) { switch (args->command) { case Command:Pack: return TransformFile(args.inputFileName, args.outputFileName, Pack); case Command::Unpack: return TransformFile(args.inputFileName, args.outputFileName, Unpack); } }
[ ] Файл и 255 и 254 одинаковых символов в сжатом виде выглядят одинаково. Программа неверно компрессирует
[ ] Добавьте тесты на проверку сжатия последовтельностей длиной 254, 255, 256 и 257 одинаковых байт
https://github.com/MaxMartST/OOP/blob/ce80b047ed5d138c564dad1dcdbd7f7d3e4b32bb/Lw%201/lab1.4%20rle/lab1.4%20rle/main.cpp#L6-L8
[x] FileLinker - неудачное имя
[x] Parse