all: add zstd compression library

This commit is contained in:
Markus F.X.J. Oberhumer
2023-01-13 22:07:24 +01:00
parent c52d302f07
commit 9f830e0c41
10 changed files with 334 additions and 10 deletions
+18 -6
View File
@@ -563,6 +563,7 @@ constexpr bool string_ge(const char *a, const char *b) {
//#define M_CL1B_LE16 13
#define M_LZMA 14
#define M_DEFLATE 15 /* zlib */
#define M_ZSTD 16
// compression methods internal usage
#define M_ALL (-1)
#define M_END (-2)
@@ -576,6 +577,7 @@ constexpr bool string_ge(const char *a, const char *b) {
//#define M_IS_CL1B(x) ((x) >= M_CL1B_LE32 && (x) <= M_CL1B_LE16)
#define M_IS_LZMA(x) (((x) & 255) == M_LZMA)
#define M_IS_DEFLATE(x) ((x) == M_DEFLATE)
#define M_IS_ZSTD(x) ((x) == M_ZSTD)
// filters
@@ -672,13 +674,11 @@ struct lzma_compress_config_t
void reset();
};
struct ucl_compress_config_t : public REAL_ucl_compress_config_t
{
void reset() { memset(this, 0xff, sizeof(*this)); }
};
struct zlib_compress_config_t
{
typedef OptVar<unsigned, 8u, 1u, 9u> mem_level_t; // ml
@@ -692,13 +692,20 @@ struct zlib_compress_config_t
void reset();
};
struct zstd_compress_config_t
{
unsigned dummy;
void reset();
};
struct upx_compress_config_t
{
lzma_compress_config_t conf_lzma;
ucl_compress_config_t conf_ucl;
zlib_compress_config_t conf_zlib;
void reset() { conf_lzma.reset(); conf_ucl.reset(); conf_zlib.reset(); }
zstd_compress_config_t conf_zstd;
void reset() { conf_lzma.reset(); conf_ucl.reset(); conf_zlib.reset(); conf_zstd.reset(); }
};
#define NULL_cconf ((upx_compress_config_t *) nullptr)
@@ -722,7 +729,6 @@ struct lzma_compress_result_t
void reset() { memset(this, 0, sizeof(*this)); }
};
struct ucl_compress_result_t
{
ucl_uint result[16];
@@ -730,7 +736,6 @@ struct ucl_compress_result_t
void reset() { memset(this, 0, sizeof(*this)); }
};
struct zlib_compress_result_t
{
unsigned dummy;
@@ -738,6 +743,12 @@ struct zlib_compress_result_t
void reset() { memset(this, 0, sizeof(*this)); }
};
struct zstd_compress_result_t
{
unsigned dummy;
void reset() { memset(this, 0, sizeof(*this)); }
};
struct upx_compress_result_t
{
@@ -748,10 +759,11 @@ struct upx_compress_result_t
lzma_compress_result_t result_lzma;
ucl_compress_result_t result_ucl;
zlib_compress_result_t result_zlib;
zstd_compress_result_t result_zstd;
void reset() {
memset(this, 0, sizeof(*this));
result_lzma.reset(); result_ucl.reset(); result_zlib.reset();
result_lzma.reset(); result_ucl.reset(); result_zlib.reset(); result_zstd.reset();
}
};