Support std::byte in zlib

This commit is contained in:
momo5502
2025-03-22 13:08:54 +01:00
parent 456369476a
commit b83b405309
2 changed files with 18 additions and 6 deletions

View File

@@ -48,7 +48,7 @@ namespace utils::compression
};
}
std::vector<std::uint8_t> decompress(const std::vector<std::uint8_t>& data)
std::vector<std::uint8_t> decompress(const std::span<const std::uint8_t> data)
{
std::vector<std::uint8_t> buffer{};
zlib_stream stream_container{};
@@ -80,7 +80,12 @@ namespace utils::compression
return buffer;
}
std::vector<std::uint8_t> compress(const std::vector<std::uint8_t>& data)
std::vector<std::uint8_t> decompress(const std::span<const std::byte>& data)
{
return decompress(std::span(reinterpret_cast<const uint8_t*>(data.data()), data.size()));
}
std::vector<std::uint8_t> compress(const std::span<const std::uint8_t> data)
{
std::vector<std::uint8_t> result{};
auto length = compressBound(static_cast<uLong>(data.size()));
@@ -95,5 +100,10 @@ namespace utils::compression
result.resize(length);
return result;
}
std::vector<std::uint8_t> compress(const std::span<const std::byte> data)
{
return compress(std::span(reinterpret_cast<const uint8_t*>(data.data()), data.size()));
}
}
}

View File

@@ -1,6 +1,6 @@
#pragma once
#include <string>
#include <span>
#include <vector>
#include <cstdint>
@@ -9,7 +9,9 @@ namespace utils::compression
namespace zlib
{
constexpr unsigned int ZCHUNK_SIZE = 16384u;
std::vector<std::uint8_t> compress(const std::vector<std::uint8_t>& data);
std::vector<std::uint8_t> decompress(const std::vector<std::uint8_t>& data);
std::vector<std::uint8_t> compress(std::span<const std::uint8_t> data);
std::vector<std::uint8_t> compress(std::span<const std::byte> data);
std::vector<std::uint8_t> decompress(std::span<const std::uint8_t> data);
std::vector<std::uint8_t> decompress(std::span<const std::byte> data);
}
};
};