1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 19:57:45 +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

@ -11,7 +11,7 @@
namespace Compress { namespace Compress {
ErrorOr<size_t> BrotliDecompressionStream::CanonicalCode::read_symbol(LittleEndianInputBitStream& input_stream) const ErrorOr<size_t> Brotli::CanonicalCode::read_symbol(LittleEndianInputBitStream& input_stream) const
{ {
size_t code_bits = 1; size_t code_bits = 1;
@ -137,7 +137,7 @@ ErrorOr<size_t> BrotliDecompressionStream::read_variable_length()
} }
} }
ErrorOr<size_t> BrotliDecompressionStream::CanonicalCode::read_complex_prefix_code_length(LittleEndianInputBitStream& stream) ErrorOr<size_t> Brotli::CanonicalCode::read_complex_prefix_code_length(LittleEndianInputBitStream& stream)
{ {
// Symbol Code // Symbol Code
// ------ ---- // ------ ----
@ -171,7 +171,7 @@ ErrorOr<size_t> BrotliDecompressionStream::CanonicalCode::read_complex_prefix_co
} }
} }
ErrorOr<BrotliDecompressionStream::CanonicalCode> BrotliDecompressionStream::CanonicalCode::read_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size) ErrorOr<Brotli::CanonicalCode> Brotli::CanonicalCode::read_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size)
{ {
size_t hskip = TRY(stream.read_bits(2)); size_t hskip = TRY(stream.read_bits(2));
@ -181,7 +181,7 @@ ErrorOr<BrotliDecompressionStream::CanonicalCode> BrotliDecompressionStream::Can
return TRY(read_complex_prefix_code(stream, alphabet_size, hskip)); return TRY(read_complex_prefix_code(stream, alphabet_size, hskip));
} }
ErrorOr<BrotliDecompressionStream::CanonicalCode> BrotliDecompressionStream::CanonicalCode::read_simple_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size) ErrorOr<Brotli::CanonicalCode> Brotli::CanonicalCode::read_simple_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size)
{ {
CanonicalCode code {}; CanonicalCode code {};
@ -230,7 +230,7 @@ ErrorOr<BrotliDecompressionStream::CanonicalCode> BrotliDecompressionStream::Can
return code; return code;
} }
ErrorOr<BrotliDecompressionStream::CanonicalCode> BrotliDecompressionStream::CanonicalCode::read_complex_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size, size_t hskip) ErrorOr<Brotli::CanonicalCode> Brotli::CanonicalCode::read_complex_prefix_code(LittleEndianInputBitStream& stream, size_t alphabet_size, size_t hskip)
{ {
// hskip should only be 0, 2 or 3 // hskip should only be 0, 2 or 3
VERIFY(hskip != 1); VERIFY(hskip != 1);
@ -259,7 +259,7 @@ ErrorOr<BrotliDecompressionStream::CanonicalCode> BrotliDecompressionStream::Can
return Error::from_string_literal("invalid prefix code"); return Error::from_string_literal("invalid prefix code");
} }
BrotliDecompressionStream::CanonicalCode temp_code; CanonicalCode temp_code;
if (number_of_non_zero_symbols > 1) { if (number_of_non_zero_symbols > 1) {
size_t code_value = 0; size_t code_value = 0;
for (size_t bits = 1; bits <= 5; bits++) { for (size_t bits = 1; bits <= 5; bits++) {

View file

@ -13,18 +13,7 @@
namespace Compress { namespace Compress {
class BrotliDecompressionStream : public Stream { namespace Brotli {
public:
enum class State {
WindowSize,
Idle,
UncompressedData,
CompressedCommand,
CompressedLiteral,
CompressedDistance,
CompressedCopy,
CompressedDictionary,
};
class CanonicalCode { class CanonicalCode {
public: public:
@ -48,6 +37,23 @@ public:
Vector<size_t> m_symbol_values; Vector<size_t> m_symbol_values;
}; };
}
class BrotliDecompressionStream : public Stream {
using CanonicalCode = Brotli::CanonicalCode;
public:
enum class State {
WindowSize,
Idle,
UncompressedData,
CompressedCommand,
CompressedLiteral,
CompressedDistance,
CompressedCopy,
CompressedDictionary,
};
struct Block { struct Block {
size_t type; size_t type;
size_t type_previous; size_t type_previous;