65 namespace Compressor {
127 inline
bool Compress(const
std::span<const
std::
byte> input, Buffer::WriteOnly& output) const noexcept {
128 return DoCompress(input, output);
138 template<StormByte::Type::ByteInputRange Range>
141 for (
const auto value: input) {
144 return Compress(std::span<const std::byte>(data), output);
154 return DoCompress(
const_cast<Buffer::ReadOnly&
>(input), output, ReadMode::Copy);
164 return DoCompress(input, output, ReadMode::Move);
174 return DoCompress(consumer, mode);
189 return DoDecompress(input, output);
199 template<StormByte::Type::ByteInputRange Range>
202 for (
const auto value: input) {
205 return Decompress(std::span<const std::byte>(data), output);
215 return DoDecompress(
const_cast<Buffer::ReadOnly&
>(input), output, ReadMode::Copy);
225 return DoDecompress(input, output, ReadMode::Move);
235 return DoDecompress(consumer, mode);
243 unsigned short Level() const noexcept {
257 unsigned short m_level = 0;
265 m_type(type), m_level(level) {}
274 virtual bool DoCompress(std::span<const std::byte> input,
Buffer::WriteOnly& output)
const noexcept = 0;
299 virtual bool DoDecompress(std::span<const std::byte> input,
Buffer::WriteOnly& output)
const noexcept = 0;
reference emplace_back(T &&value)
bzip2 compressor.
Definition bzip2.hxx:64
Abstract compressor.
Definition generic.hxx:79
bool Compress(const Range &input, Buffer::WriteOnly &output) const
Compress an input range of byte-convertible values.
Definition generic.hxx:139
enum Type Type() const noexcept
Codec of this compressor.
Definition generic.hxx:251
bool Decompress(const Range &input, Buffer::WriteOnly &output) const
Decompress an input range of byte-convertible values.
Definition generic.hxx:200
bool Decompress(Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Decompress a buffer, consuming it.
Definition generic.hxx:224
Buffer::Consumer Compress(Buffer::Consumer consumer, ReadMode mode=ReadMode::Move) const noexcept
Compress a Consumer into another Consumer.
Definition generic.hxx:173
Buffer::Consumer Decompress(Buffer::Consumer consumer, ReadMode mode=ReadMode::Move) const noexcept
Decompress a Consumer into another Consumer.
Definition generic.hxx:234
bool Decompress(const std::span< const std::byte > input, Buffer::WriteOnly &output) const noexcept
Decompress a byte span.
Definition generic.hxx:188
Generic(Generic &&other) noexcept=default
Move constructor.
Generic(const Generic &other)=default
Copy constructor.
unsigned short Level() const noexcept
Compression level.
Definition generic.hxx:243
virtual ~Generic() noexcept
Destructor.
bool Compress(const Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Compress a read-only buffer (copy).
Definition generic.hxx:153
bool Decompress(const Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Decompress a read-only buffer (copy).
Definition generic.hxx:214
enum Type m_type
Codec.
Definition generic.hxx:256
Generic(enum Type type, unsigned short level=5)
Construct with a codec and level.
Definition generic.hxx:264
bool Compress(Buffer::ReadOnly &input, Buffer::WriteOnly &output) const noexcept
Compress a buffer, consuming it.
Definition generic.hxx:163
zlib compressor.
Definition zlib.hxx:64
Generic::PointerType Create(Type type, unsigned short level) noexcept
Factory for a compressor.
ReadMode
How a source buffer is consumed.
Definition typedefs.hxx:57
Root namespace of the StormByte suite.
#define STORMBYTE_CRYPTO_PUBLIC
Definition visibility.h:53