1#ifndef RPNX_COMPRESSION_COMPRESSION_HPP
2#define RPNX_COMPRESSION_COMPRESSION_HPP
65 std::optional< std::int32_t >
level;
110 [[nodiscard]]
char const*
what() const noexcept override;
127 std::
string m_message;
198 template < std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel,
typename output_iterator >
201 using input_value = std::remove_cv_t< std::iter_value_t< input_iterator > >;
202 static_assert(std::is_same_v< input_value, std::byte > || (std::is_integral_v< input_value > &&
sizeof(input_value) == 1U),
"compression input iterators must contain byte-sized values");
244 template < format stream_format, std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel,
typename output_iterator >
263 else if constexpr (stream_format ==
format::xz)
269 return compress(stream_format, first, last, output, options);
286 template < std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel,
typename output_iterator >
289 using input_value = std::remove_cv_t< std::iter_value_t< input_iterator > >;
290 static_assert(std::is_same_v< input_value, std::byte > || (std::is_integral_v< input_value > &&
sizeof(input_value) == 1U),
"decompression input iterators must contain byte-sized values");
332 template < format stream_format, std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel,
typename output_iterator >
351 else if constexpr (stream_format ==
format::xz)
357 return decompress(stream_format, first, last, output, options);
Native bzip2 block transforms, entropy coding, and stream adapters.
Exception raised for malformed streams, invalid options, and codec failures.
compression_error(error_code code, format stream_format, std::string message)
Constructs a compression exception.
char const * what() const noexcept override
Returns the human-readable diagnostic.
format stream_format() const noexcept
Returns the stream format involved in the error.
error_code code() const noexcept
Returns the stable error category.
Native raw DEFLATE, zlib, and gzip coding implementation.
Native LZ4 block and frame coding implementation.
output_iterator compress(input_iterator first, sentinel last, output_iterator output, compression_options const &options)
Compresses an iterator range as a native bzip2 stream.
output_iterator decompress(input_iterator first, sentinel last, output_iterator output, decompression_options const &options)
Decompresses one or more native bzip2 streams.
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.
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.
output_iterator decompress(input_iterator first, sentinel last, output_iterator output, decompression_options const &options)
Decompresses one or more LZ4 frames.
output_iterator compress(input_iterator first, sentinel last, output_iterator output, compression_options const &options)
Compresses an iterator range as an LZ4 frame.
output_iterator decompress(input_iterator first, sentinel last, output_iterator output, decompression_options const &options)
Decompresses one or more xz streams containing LZMA2.
output_iterator compress(input_iterator first, sentinel last, output_iterator output, compression_options const &options)
Compresses an iterator range as an xz stream containing LZMA2.
output_iterator decompress(input_iterator first, sentinel last, output_iterator output, decompression_options const &options)
Decompresses one or more Zstandard or skippable frames.
output_iterator compress(input_iterator first, sentinel last, output_iterator output, compression_options const &options)
Compresses an iterator range as a Zstandard frame.
Facilities for creating and decoding supported compressed streams.
std::vector< std::byte > decompress(format stream_format, std::span< std::byte const > input, decompression_options const &options={})
Decompresses a contiguous byte buffer into an owning result.
format
Wire formats recognized by the library.
@ gzip
RFC 1952 gzip member or concatenated members.
@ zlib
RFC 1950 zlib wrapper around DEFLATE.
@ deflate
Raw RFC 1951 DEFLATE stream.
@ zip
ZIP32 archive; use create_zip() and extract_zip().
@ zstandard
Zstandard frame.
@ xz
xz container containing LZMA2 data.
error_code
Stable machine-readable categories reported by compression_error.
@ trailing_data
Bytes remain after the permitted stream members.
@ output_limit_exceeded
Decoding would exceed a configured resource limit.
@ backend_failure
A codec encountered an internal failure not covered by another category.
@ insufficient_output_space
A caller-owned output span cannot hold the complete result.
@ invalid_option
An option or format value is outside its accepted range.
@ unsupported_feature
Valid input requires a format feature not implemented by the library.
@ invalid_data
The input does not conform to the selected format.
std::vector< std::byte > compress(format stream_format, std::span< std::byte const > input, compression_options const &options={})
Compresses a contiguous byte buffer into an owning result.
Options shared by compression operations.
std::optional< std::int32_t > level
Optional format-specific compression level.
Resource and stream-validation policy for decompression operations.
std::size_t maximum_output_size
Maximum total number of bytes the operation may emit.
bool allow_concatenated_streams
Whether to decode adjacent members for formats that define concatenation.
Native xz container, LZMA2, and range-coding implementation.
Native Zstandard frame, entropy-table, and sequence implementation.