29#if defined(LOGIT_HAS_ZLIB)
34 zs.next_in =
reinterpret_cast<Bytef*
>(
const_cast<char*
>(input.data()));
35 zs.avail_in =
static_cast<uInt
>(input.size());
39 if (level < 1) level = 1;
40 if (level > 9) level = 9;
42 int window_bits = 15 + 16;
43 if (deflateInit2(&zs, level, Z_DEFLATED, window_bits, 8, Z_DEFAULT_STRATEGY) != Z_OK) {
50 std::size_t offset = 0;
51 const std::size_t buf_size = 32768;
54 output.resize(offset + buf_size);
55 zs.next_out =
reinterpret_cast<Bytef*
>(&output[offset]);
56 zs.avail_out =
static_cast<uInt
>(buf_size);
58 ret = deflate(&zs, Z_FINISH);
59 if (ret == Z_STREAM_ERROR) {
64 offset = zs.total_out;
65 }
while (ret != Z_STREAM_END);
67 output.resize(zs.total_out);
71 (void)input; (void)output; (void)level;
81#if defined(LOGIT_HAS_ZLIB)
86 zs.next_in =
reinterpret_cast<Bytef*
>(
const_cast<char*
>(input.data()));
87 zs.avail_in =
static_cast<uInt
>(input.size());
91 int window_bits = 15 + 32;
92 if (inflateInit2(&zs, window_bits) != Z_OK) {
99 std::size_t offset = 0;
100 const std::size_t buf_size = 32768;
103 output.resize(offset + buf_size);
104 zs.next_out =
reinterpret_cast<Bytef*
>(&output[offset]);
105 zs.avail_out =
static_cast<uInt
>(buf_size);
107 ret = inflate(&zs, Z_NO_FLUSH);
108 if (ret == Z_STREAM_ERROR || ret == Z_DATA_ERROR || ret == Z_MEM_ERROR) {
113 offset = zs.total_out;
114 }
while (ret != Z_STREAM_END);
116 output.resize(zs.total_out);
120 (void)input; (void)output;
132#if defined(LOGIT_HAS_ZSTD)
133 if (level < 1) level = 1;
134 if (level > 19) level = 19;
136 std::size_t bound = ZSTD_compressBound(input.size());
137 output.resize(bound);
139 std::size_t result = ZSTD_compress(
140 &output[0], output.size(),
141 input.data(), input.size(),
144 if (ZSTD_isError(result)) {
149 output.resize(result);
152 (void)input; (void)output; (void)level;
162#if defined(LOGIT_HAS_ZSTD)
163 std::size_t
const d_size = ZSTD_getFrameContentSize(input.data(), input.size());
164 if (d_size == ZSTD_CONTENTSIZE_ERROR || d_size == ZSTD_CONTENTSIZE_UNKNOWN) {
168 output.resize(d_size);
169 std::size_t
const result = ZSTD_decompress(
170 &output[0], output.size(),
171 input.data(), input.size());
173 if (ZSTD_isError(result)) {
178 output.resize(result);
181 (void)input; (void)output;