summaryrefslogtreecommitdiffstats
path: root/src/zstd/zlibWrapper/zstd_zlibwrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/zstd/zlibWrapper/zstd_zlibwrapper.h')
-rw-r--r--src/zstd/zlibWrapper/zstd_zlibwrapper.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/zstd/zlibWrapper/zstd_zlibwrapper.h b/src/zstd/zlibWrapper/zstd_zlibwrapper.h
new file mode 100644
index 000000000..e791043e1
--- /dev/null
+++ b/src/zstd/zlibWrapper/zstd_zlibwrapper.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2016-2020, Przemyslaw Skibinski, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#ifndef ZSTD_ZLIBWRAPPER_H
+#define ZSTD_ZLIBWRAPPER_H
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+
+#define ZLIB_CONST
+#define Z_PREFIX
+#define ZLIB_INTERNAL /* disables gz*64 functions but fixes zlib 1.2.4 with Z_PREFIX */
+#include <zlib.h>
+
+#if !defined(z_const)
+ #define z_const
+#endif
+
+
+/* returns a string with version of zstd library */
+const char * zstdVersion(void);
+
+
+/*** COMPRESSION ***/
+/* ZWRAP_useZSTDcompression() enables/disables zstd compression during runtime.
+ By default zstd compression is disabled. To enable zstd compression please use one of the methods:
+ - compilation with the additional option -DZWRAP_USE_ZSTD=1
+ - using '#define ZWRAP_USE_ZSTD 1' in source code before '#include "zstd_zlibwrapper.h"'
+ - calling ZWRAP_useZSTDcompression(1)
+ All above-mentioned methods will enable zstd compression for all threads.
+ Be aware that ZWRAP_useZSTDcompression() is not thread-safe and may lead to a race condition. */
+void ZWRAP_useZSTDcompression(int turn_on);
+
+/* checks if zstd compression is turned on */
+int ZWRAP_isUsingZSTDcompression(void);
+
+/* Changes a pledged source size for a given compression stream.
+ It will change ZSTD compression parameters what may improve compression speed and/or ratio.
+ The function should be called just after deflateInit() or deflateReset() and before deflate() or deflateSetDictionary().
+ It's only helpful when data is compressed in blocks.
+ There will be no change in case of deflateInit() or deflateReset() immediately followed by deflate(strm, Z_FINISH)
+ as this case is automatically detected. */
+int ZWRAP_setPledgedSrcSize(z_streamp strm, unsigned long long pledgedSrcSize);
+
+/* Similar to deflateReset but preserves dictionary set using deflateSetDictionary.
+ It should improve compression speed because there will be less calls to deflateSetDictionary
+ When using zlib compression this method redirects to deflateReset. */
+int ZWRAP_deflateReset_keepDict(z_streamp strm);
+
+
+
+/*** DECOMPRESSION ***/
+typedef enum { ZWRAP_FORCE_ZLIB, ZWRAP_AUTO } ZWRAP_decompress_type;
+
+/* ZWRAP_setDecompressionType() enables/disables automatic recognition of zstd/zlib compressed data during runtime.
+ By default auto-detection of zstd and zlib streams in enabled (ZWRAP_AUTO).
+ Forcing zlib decompression with ZWRAP_setDecompressionType(ZWRAP_FORCE_ZLIB) slightly improves
+ decompression speed of zlib-encoded streams.
+ Be aware that ZWRAP_setDecompressionType() is not thread-safe and may lead to a race condition. */
+void ZWRAP_setDecompressionType(ZWRAP_decompress_type type);
+
+/* checks zstd decompression type */
+ZWRAP_decompress_type ZWRAP_getDecompressionType(void);
+
+/* Checks if zstd decompression is used for a given stream.
+ If will return 1 only when inflate() was called and zstd header was detected. */
+int ZWRAP_isUsingZSTDdecompression(z_streamp strm);
+
+/* Similar to inflateReset but preserves dictionary set using inflateSetDictionary.
+ inflate() will return Z_NEED_DICT only for the first time what will improve decompression speed.
+ For zlib streams this method redirects to inflateReset. */
+int ZWRAP_inflateReset_keepDict(z_streamp strm);
+
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* ZSTD_ZLIBWRAPPER_H */