improve PRS efficiency further

This commit is contained in:
Martin Michelsen
2023-01-20 23:12:49 -08:00
parent b02c82bb0d
commit d669f7ce6c
6 changed files with 465 additions and 363 deletions
+6 -2
View File
@@ -4,7 +4,7 @@
#include <string>
#include <functional>
#include <set>
#include <deque>
#include "Text.hh"
@@ -51,7 +51,7 @@ private:
parray<uint8_t, 0x100> forward_log;
size_t compression_offset;
parray<uint8_t, 0x2000> reverse_log;
std::vector<std::set<size_t>> reverse_log_index;
std::vector<std::deque<size_t>> reverse_log_index;
StringWriter output;
};
@@ -71,6 +71,10 @@ std::string prs_decompress(const std::string& data, size_t max_output_size = 0);
size_t prs_decompress_size(const void* data, size_t size, size_t max_output_size = 0);
size_t prs_decompress_size(const std::string& data, size_t max_output_size = 0);
// Prints the command stream from a PRS-compressed buffer.
void prs_disassemble(FILE* stream, const void* data, size_t size);
void prs_disassemble(FILE* stream, const std::string& data);
// Compresses and decompresses data using the BC0 algorithm.
std::string bc0_compress(const std::string& data, std::function<void(size_t, size_t)> progress_fn = nullptr);
std::string bc0_decompress(const std::string& data);