1#ifndef LIBSBX_UTILITY_COMPRESSION_HPP_
2#define LIBSBX_UTILITY_COMPRESSION_HPP_
9namespace sbx::utility {
13 : std::runtime_error{std::string{message}} { }
18 : std::runtime_error{std::string{message}} { }
21enum class compression_type : std::uint8_t {
25template<compression_type Type>
27 [[nodiscard]]
static auto compress(std::span<const char> input) -> std::vector<char>;
28 [[nodiscard]]
static auto decompress(std::span<const char> input,
const std::size_t original_size) -> std::vector<char>;
33 [[nodiscard]]
static auto compress(std::span<const char> input) -> std::vector<char>;
34 [[nodiscard]]
static auto decompress(std::span<const char> input,
const std::size_t original_size) -> std::vector<char>;
39template<
typename Type, compression_type CompressionType = compression_type::lz4>
40auto compress(std::span<const Type> input) -> std::vector<char> {
44template<
typename Type, compression_type CompressionType = compression_type::lz4>
45auto decompress(std::span<const char> input,
const std::size_t original_size) -> std::vector<Type> {
46 return basic_compressor<CompressionType>::decompress({
reinterpret_cast<const char*
>(input.data()), input.size() *
sizeof(Type)}, original_size *
sizeof(Type));
Definition: compression.hpp:32
Definition: compression.hpp:26
Definition: compression.hpp:11
Definition: compression.hpp:16