2#ifndef LIBSBX_UTILITY_COMPRESSION_HPP_
3#define LIBSBX_UTILITY_COMPRESSION_HPP_
11namespace sbx::utility {
15 : std::runtime_error{std::string{message}} { }
20 : std::runtime_error{std::string{message}} { }
23enum class compression_type : std::uint8_t {
28template<compression_type Type>
30 [[nodiscard]]
static auto compress(std::span<const char> input) -> std::vector<char>;
31 static auto decompress(std::span<const char> input, std::span<char> output) -> void;
36 [[nodiscard]]
static auto compress(std::span<const char> input) -> std::vector<char>;
37 static auto decompress(std::span<const char> input, std::span<char> output) -> void;
42 [[nodiscard]]
static auto compress(std::span<const char> input) -> std::vector<char>;
43 static auto decompress(std::span<const char> input, std::span<char> output) -> void;
49template<
typename Type, compression_type CompressionType = compression_type::lz4>
50auto compress(std::span<const Type> input) -> std::vector<char> {
54template<
typename Type, compression_type CompressionType = compression_type::lz4>
55auto decompress(std::span<const char> input,
const std::size_t original_size) -> std::vector<Type> {
56 auto output = std::vector<Type>(original_size);
58 basic_compressor<CompressionType>::decompress(input, {
reinterpret_cast<char*
>(output.data()), original_size *
sizeof(Type)});
Definition: compression.hpp:35
Definition: compression.hpp:41
Definition: compression.hpp:29
Definition: compression.hpp:13
Definition: compression.hpp:18