nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
deflate.hpp
1// ops/include/nk/ops/deflate.hpp
2//
3// In-tree RFC 1951 Deflate/Inflate, RFC 1950 ZLIB wrapper, and
4// CRC-32 / Adler-32 checksums. Zero external dependencies.
5//
6// Shared compression primitives for image (PNG, TIFF) and runtime (MAT v7).
7
8#pragma once
9
10#include <cstddef>
11#include <cstdint>
12#include <vector>
13
14namespace nk::ops {
15
17std::uint32_t crc32(const std::uint8_t *data, std::size_t len);
18
20std::uint32_t adler32(const std::uint8_t *data, std::size_t len);
21
28std::vector<std::uint8_t> inflateRaw(const std::uint8_t *src, std::size_t len,
29 std::size_t expectedSizeHint = 0);
30
36std::vector<std::uint8_t> deflateRaw(const std::uint8_t *src, std::size_t len,
37 int level = 6);
38
45std::vector<std::uint8_t> zlibDecompress(const std::uint8_t *src, std::size_t len,
46 std::size_t expectedSizeHint = 0);
47
53std::vector<std::uint8_t> zlibCompress(const std::uint8_t *src, std::size_t len,
54 int level = 6);
55
56} // namespace nk::ops