1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 18:07:34 +00:00

LibCompress: Move CanonicalCode in the Brotli namespace

The class was an inner class of `BrotliDecompressionStream`, let's move
it outside the `Stream` object in order to ease the access to user only
interested in this part.
This commit is contained in:
Lucas CHOLLET 2023-07-06 13:38:09 -04:00 committed by Andrew Kaster
parent 9248fd7f33
commit 96eace8390
2 changed files with 34 additions and 28 deletions

View file

@ -13,7 +13,35 @@
namespace Compress {
namespace Brotli {
class CanonicalCode {
public:
CanonicalCode() = default;
static ErrorOr<CanonicalCode> read_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size);
static ErrorOr<CanonicalCode> read_simple_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size);
static ErrorOr<CanonicalCode> read_complex_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size, size_t hskip);
ErrorOr<size_t> read_symbol(LittleEndianInputBitStream&) const;
void clear()
{
m_symbol_codes.clear();
m_symbol_values.clear();
}
private:
static ErrorOr<size_t> read_complex_prefix_code_length(LittleEndianInputBitStream&);
Vector<size_t> m_symbol_codes;
Vector<size_t> m_symbol_values;
};
}
class BrotliDecompressionStream : public Stream {
using CanonicalCode = Brotli::CanonicalCode;
public:
enum class State {
WindowSize,
@ -26,28 +54,6 @@ public:
CompressedDictionary,
};
class CanonicalCode {
public:
CanonicalCode() = default;
static ErrorOr<CanonicalCode> read_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size);
static ErrorOr<CanonicalCode> read_simple_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size);
static ErrorOr<CanonicalCode> read_complex_prefix_code(LittleEndianInputBitStream&, size_t alphabet_size, size_t hskip);
ErrorOr<size_t> read_symbol(LittleEndianInputBitStream&) const;
void clear()
{
m_symbol_codes.clear();
m_symbol_values.clear();
}
private:
static ErrorOr<size_t> read_complex_prefix_code_length(LittleEndianInputBitStream&);
Vector<size_t> m_symbol_codes;
Vector<size_t> m_symbol_values;
};
struct Block {
size_t type;
size_t type_previous;