Internal implementation shared by raw DEFLATE, zlib, gzip, and ZIP. More...
Classes | |
| class | huffman_decoder |
| Canonical Huffman decoder for the bit-reversed codes used by DEFLATE. More... | |
| class | iterator_bit_reader |
| LSB-first bit reader that consumes a single-pass byte reader. More... | |
| class | iterator_bit_writer |
| LSB-first bit writer that emits bytes through an STL output iterator. More... | |
Functions | |
| std::uint16_t | reverse_bits (std::uint16_t value, std::uint8_t bit_count) noexcept |
| Reverses the selected low bits for DEFLATE wire order. | |
| template<typename writer_type> | |
| void | write_fixed_symbol (writer_type &writer, std::uint16_t symbol) |
| Emits one fixed-Huffman literal or length symbol. | |
| std::uint32_t | crc32 (std::span< std::byte const > input) noexcept |
| Computes the reflected IEEE CRC-32 used by gzip and ZIP. | |
| template<typename writer_type> | |
| void | compress_fixed_block (writer_type &writer, std::span< std::byte const > input, bool final_block, std::int32_t level) |
| Emits one fixed-Huffman DEFLATE block from a bounded search buffer. | |
| template<std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel, typename output_iterator> | |
| output_iterator | compress (format stream_format, input_iterator first, sentinel last, output_iterator output, compression_options const &options) |
| Compresses an iterator range as raw DEFLATE, zlib, or gzip. | |
| template<std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel, typename output_iterator> | |
| output_iterator | decompress (format stream_format, input_iterator first, sentinel last, output_iterator output, decompression_options const &options) |
| Decompresses raw DEFLATE, zlib, or gzip input. | |
Internal implementation shared by raw DEFLATE, zlib, gzip, and ZIP.
| output_iterator rpnx::compression::deflate_codec::compress | ( | format | stream_format, |
| input_iterator | first, | ||
| sentinel | last, | ||
| output_iterator | output, | ||
| compression_options const & | options ) |
Compresses an iterator range as raw DEFLATE, zlib, or gzip.
| input_iterator | Single-pass byte iterator. |
| sentinel | Sentinel for first. |
| output_iterator | Destination byte iterator. |
| stream_format | One of format::deflate, format::zlib, or format::gzip. |
| first | First source byte. |
| last | Sentinel past the source. |
| output | Destination iterator. |
| options | Compression level from 0 through 9. |
Definition at line 408 of file deflate.hpp.
References compress_fixed_block(), rpnx::compression::deflate, rpnx::compression::deflate_codec::iterator_bit_writer< output_iterator >::finish(), rpnx::compression::gzip, rpnx::compression::invalid_option, rpnx::compression::compression_options::level, rpnx::compression::implementation::to_byte(), rpnx::compression::implementation::adler32_accumulator::update(), rpnx::compression::implementation::crc32_accumulator::update(), rpnx::compression::implementation::adler32_accumulator::value(), rpnx::compression::implementation::crc32_accumulator::value(), rpnx::compression::deflate_codec::iterator_bit_writer< output_iterator >::write_bits(), rpnx::compression::implementation::write_byte(), and rpnx::compression::zlib.
| void rpnx::compression::deflate_codec::compress_fixed_block | ( | writer_type & | writer, |
| std::span< std::byte const > | input, | ||
| bool | final_block, | ||
| std::int32_t | level ) |
Emits one fixed-Huffman DEFLATE block from a bounded search buffer.
| writer_type | LSB-first writer providing write_bits(). |
| writer | Destination bit writer. |
| input | Uncompressed block. |
| final_block | Whether to set the DEFLATE final-block bit. |
| level | Compression level controlling match-search depth. |
Definition at line 317 of file deflate.hpp.
References reverse_bits(), and write_fixed_symbol().
Referenced by compress().
|
inlinenodiscardnoexcept |
Computes the reflected IEEE CRC-32 used by gzip and ZIP.
| input | Bytes to checksum. |
Definition at line 183 of file deflate.hpp.
Referenced by rpnx::compression::create_zip(), and rpnx::compression::zip_detail::extract_archive().
| output_iterator rpnx::compression::deflate_codec::decompress | ( | format | stream_format, |
| input_iterator | first, | ||
| sentinel | last, | ||
| output_iterator | output, | ||
| decompression_options const & | options ) |
Decompresses raw DEFLATE, zlib, or gzip input.
| input_iterator | Single-pass byte iterator. |
| sentinel | Sentinel for first. |
| output_iterator | Destination byte iterator. |
| stream_format | One of format::deflate, format::zlib, or format::gzip. |
| first | First compressed byte. |
| last | Sentinel past the compressed input. |
| output | Destination iterator. |
| options | Output limit and concatenated-member policy. |
Definition at line 514 of file deflate.hpp.
References rpnx::compression::decompression_options::allow_concatenated_streams, rpnx::compression::deflate_codec::huffman_decoder::build(), rpnx::compression::deflate_codec::huffman_decoder::decode(), rpnx::compression::deflate, rpnx::compression::implementation::byte_reader< input_iterator, sentinel >::empty(), rpnx::compression::gzip, rpnx::compression::invalid_data, rpnx::compression::invalid_option, rpnx::compression::decompression_options::maximum_output_size, rpnx::compression::output_limit_exceeded, rpnx::compression::implementation::byte_reader< input_iterator, sentinel >::read(), rpnx::compression::trailing_data, rpnx::compression::implementation::adler32_accumulator::update(), rpnx::compression::implementation::crc32_accumulator::update(), rpnx::compression::implementation::adler32_accumulator::value(), rpnx::compression::implementation::crc32_accumulator::value(), rpnx::compression::implementation::write_byte(), and rpnx::compression::zlib.
|
inlinenodiscardnoexcept |
Reverses the selected low bits for DEFLATE wire order.
| value | Value containing the bits to reverse. |
| bit_count | Number of low bits to reverse. |
Definition at line 140 of file deflate.hpp.
Referenced by compress_fixed_block(), and write_fixed_symbol().
| void rpnx::compression::deflate_codec::write_fixed_symbol | ( | writer_type & | writer, |
| std::uint16_t | symbol ) |
Emits one fixed-Huffman literal or length symbol.
| writer_type | LSB-first writer providing write_bits(). |
| writer | Destination bit writer. |
| symbol | DEFLATE literal, end-of-block, or length symbol. |
Definition at line 158 of file deflate.hpp.
References reverse_bits().
Referenced by compress_fixed_block().