Zlib.h 711 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2020, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/ByteBuffer.h>
  8. #include <AK/Optional.h>
  9. #include <AK/Span.h>
  10. #include <AK/Types.h>
  11. namespace Compress {
  12. class Zlib {
  13. public:
  14. Optional<ByteBuffer> decompress();
  15. u32 checksum();
  16. static Optional<Zlib> try_create(ReadonlyBytes data);
  17. static Optional<ByteBuffer> decompress_all(ReadonlyBytes);
  18. private:
  19. Zlib(const ReadonlyBytes& data);
  20. u8 m_compression_method;
  21. u8 m_compression_info;
  22. u8 m_check_bits;
  23. u8 m_has_dictionary;
  24. u8 m_compression_level;
  25. u32 m_checksum { 0 };
  26. ReadonlyBytes m_input_data;
  27. ReadonlyBytes m_data_bytes;
  28. };
  29. }