multi_compress 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +13 -0
- data/LICENSE.txt +21 -0
- data/README.md +116 -0
- data/ext/multi_compress/extconf.rb +171 -0
- data/ext/multi_compress/multi_compress.c +1534 -0
- data/ext/multi_compress/vendor/brotli/c/common/constants.c +15 -0
- data/ext/multi_compress/vendor/brotli/c/common/constants.h +201 -0
- data/ext/multi_compress/vendor/brotli/c/common/context.c +156 -0
- data/ext/multi_compress/vendor/brotli/c/common/context.h +113 -0
- data/ext/multi_compress/vendor/brotli/c/common/dictionary.c +5916 -0
- data/ext/multi_compress/vendor/brotli/c/common/dictionary.h +64 -0
- data/ext/multi_compress/vendor/brotli/c/common/platform.c +23 -0
- data/ext/multi_compress/vendor/brotli/c/common/platform.h +541 -0
- data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary.c +521 -0
- data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary_internal.h +75 -0
- data/ext/multi_compress/vendor/brotli/c/common/transform.c +291 -0
- data/ext/multi_compress/vendor/brotli/c/common/transform.h +85 -0
- data/ext/multi_compress/vendor/brotli/c/common/version.h +51 -0
- data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.c +78 -0
- data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.h +423 -0
- data/ext/multi_compress/vendor/brotli/c/dec/decode.c +2875 -0
- data/ext/multi_compress/vendor/brotli/c/dec/huffman.c +342 -0
- data/ext/multi_compress/vendor/brotli/c/dec/huffman.h +122 -0
- data/ext/multi_compress/vendor/brotli/c/dec/prefix.h +733 -0
- data/ext/multi_compress/vendor/brotli/c/dec/state.c +183 -0
- data/ext/multi_compress/vendor/brotli/c/dec/state.h +400 -0
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references.c +207 -0
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references.h +40 -0
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.c +939 -0
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.h +96 -0
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references_inc.h +189 -0
- data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.c +36 -0
- data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.h +64 -0
- data/ext/multi_compress/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
- data/ext/multi_compress/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
- data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.c +217 -0
- data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.h +52 -0
- data/ext/multi_compress/vendor/brotli/c/enc/block_splitter_inc.h +481 -0
- data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.c +1336 -0
- data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.h +89 -0
- data/ext/multi_compress/vendor/brotli/c/enc/cluster.c +57 -0
- data/ext/multi_compress/vendor/brotli/c/enc/cluster.h +49 -0
- data/ext/multi_compress/vendor/brotli/c/enc/cluster_inc.h +325 -0
- data/ext/multi_compress/vendor/brotli/c/enc/command.c +28 -0
- data/ext/multi_compress/vendor/brotli/c/enc/command.h +191 -0
- data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.c +207 -0
- data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.h +74 -0
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.c +800 -0
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.h +86 -0
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.c +657 -0
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.h +72 -0
- data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.c +1848 -0
- data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.h +25 -0
- data/ext/multi_compress/vendor/brotli/c/enc/encode.c +1996 -0
- data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.c +640 -0
- data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.h +157 -0
- data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.c +504 -0
- data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.h +123 -0
- data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode_static.h +542 -0
- data/ext/multi_compress/vendor/brotli/c/enc/fast_log.c +105 -0
- data/ext/multi_compress/vendor/brotli/c/enc/fast_log.h +67 -0
- data/ext/multi_compress/vendor/brotli/c/enc/find_match_length.h +72 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash.h +728 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_composite_inc.h +140 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +295 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match64_inc.h +262 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_inc.h +258 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +330 -0
- data/ext/multi_compress/vendor/brotli/c/enc/histogram.c +100 -0
- data/ext/multi_compress/vendor/brotli/c/enc/histogram.h +64 -0
- data/ext/multi_compress/vendor/brotli/c/enc/histogram_inc.h +51 -0
- data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.c +180 -0
- data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.h +32 -0
- data/ext/multi_compress/vendor/brotli/c/enc/memory.c +194 -0
- data/ext/multi_compress/vendor/brotli/c/enc/memory.h +131 -0
- data/ext/multi_compress/vendor/brotli/c/enc/metablock.c +677 -0
- data/ext/multi_compress/vendor/brotli/c/enc/metablock.h +106 -0
- data/ext/multi_compress/vendor/brotli/c/enc/metablock_inc.h +185 -0
- data/ext/multi_compress/vendor/brotli/c/enc/params.h +47 -0
- data/ext/multi_compress/vendor/brotli/c/enc/prefix.h +54 -0
- data/ext/multi_compress/vendor/brotli/c/enc/quality.h +202 -0
- data/ext/multi_compress/vendor/brotli/c/enc/ringbuffer.h +168 -0
- data/ext/multi_compress/vendor/brotli/c/enc/state.h +104 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict.c +542 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict.h +41 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut.h +5866 -0
- data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.c +85 -0
- data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.h +33 -0
- data/ext/multi_compress/vendor/brotli/c/enc/write_bits.h +88 -0
- data/ext/multi_compress/vendor/brotli/c/include/brotli/decode.h +409 -0
- data/ext/multi_compress/vendor/brotli/c/include/brotli/encode.h +501 -0
- data/ext/multi_compress/vendor/brotli/c/include/brotli/port.h +305 -0
- data/ext/multi_compress/vendor/brotli/c/include/brotli/shared_dictionary.h +100 -0
- data/ext/multi_compress/vendor/brotli/c/include/brotli/types.h +83 -0
- data/ext/multi_compress/vendor/lz4/lib/LICENSE +24 -0
- data/ext/multi_compress/vendor/lz4/lib/Makefile +244 -0
- data/ext/multi_compress/vendor/lz4/lib/README.md +193 -0
- data/ext/multi_compress/vendor/lz4/lib/dll/example/Makefile +63 -0
- data/ext/multi_compress/vendor/lz4/lib/dll/example/README.md +69 -0
- data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.sln +25 -0
- data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.vcxproj +182 -0
- data/ext/multi_compress/vendor/lz4/lib/liblz4-dll.rc.in +35 -0
- data/ext/multi_compress/vendor/lz4/lib/liblz4.pc.in +14 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4.c +2829 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4.h +884 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4file.c +341 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4file.h +93 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4frame.c +2136 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4frame.h +751 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4frame_static.h +47 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4hc.c +2192 -0
- data/ext/multi_compress/vendor/lz4/lib/lz4hc.h +414 -0
- data/ext/multi_compress/vendor/lz4/lib/xxhash.c +1030 -0
- data/ext/multi_compress/vendor/lz4/lib/xxhash.h +328 -0
- data/ext/multi_compress/vendor/zstd/lib/BUCK +232 -0
- data/ext/multi_compress/vendor/zstd/lib/Makefile +369 -0
- data/ext/multi_compress/vendor/zstd/lib/README.md +237 -0
- data/ext/multi_compress/vendor/zstd/lib/common/allocations.h +55 -0
- data/ext/multi_compress/vendor/zstd/lib/common/bits.h +200 -0
- data/ext/multi_compress/vendor/zstd/lib/common/bitstream.h +457 -0
- data/ext/multi_compress/vendor/zstd/lib/common/compiler.h +450 -0
- data/ext/multi_compress/vendor/zstd/lib/common/cpu.h +249 -0
- data/ext/multi_compress/vendor/zstd/lib/common/debug.c +30 -0
- data/ext/multi_compress/vendor/zstd/lib/common/debug.h +116 -0
- data/ext/multi_compress/vendor/zstd/lib/common/entropy_common.c +340 -0
- data/ext/multi_compress/vendor/zstd/lib/common/error_private.c +63 -0
- data/ext/multi_compress/vendor/zstd/lib/common/error_private.h +168 -0
- data/ext/multi_compress/vendor/zstd/lib/common/fse.h +640 -0
- data/ext/multi_compress/vendor/zstd/lib/common/fse_decompress.c +313 -0
- data/ext/multi_compress/vendor/zstd/lib/common/huf.h +286 -0
- data/ext/multi_compress/vendor/zstd/lib/common/mem.h +426 -0
- data/ext/multi_compress/vendor/zstd/lib/common/pool.c +371 -0
- data/ext/multi_compress/vendor/zstd/lib/common/pool.h +90 -0
- data/ext/multi_compress/vendor/zstd/lib/common/portability_macros.h +158 -0
- data/ext/multi_compress/vendor/zstd/lib/common/threading.c +182 -0
- data/ext/multi_compress/vendor/zstd/lib/common/threading.h +150 -0
- data/ext/multi_compress/vendor/zstd/lib/common/xxhash.c +18 -0
- data/ext/multi_compress/vendor/zstd/lib/common/xxhash.h +7020 -0
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_common.c +48 -0
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_deps.h +111 -0
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_internal.h +392 -0
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_trace.h +163 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/clevels.h +134 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/fse_compress.c +625 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/hist.c +181 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/hist.h +75 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/huf_compress.c +1464 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress.c +7153 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_internal.h +1534 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.c +235 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.h +39 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.c +442 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.h +54 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.c +688 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.h +32 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_cwksp.h +748 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.c +770 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.h +50 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.c +968 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.h +38 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.c +2199 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.h +202 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.c +730 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.h +117 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.c +1576 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.h +80 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.c +1882 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.h +113 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress.c +1944 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress_amd64.S +595 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.c +244 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.h +44 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress.c +2407 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.c +2215 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.h +73 -0
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff.h +214 -0
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_common.c +26 -0
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_compress.c +167 -0
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_decompress.c +77 -0
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.c +1261 -0
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.h +152 -0
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.c +1913 -0
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.h +67 -0
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/fastcover.c +766 -0
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/zdict.c +1133 -0
- data/ext/multi_compress/vendor/zstd/lib/dll/example/Makefile +48 -0
- data/ext/multi_compress/vendor/zstd/lib/dll/example/README.md +63 -0
- data/ext/multi_compress/vendor/zstd/lib/dll/example/build_package.bat +20 -0
- data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.sln +25 -0
- data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_legacy.h +452 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.c +2127 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.h +94 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.c +3465 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.h +93 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.c +3105 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.h +93 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.c +3598 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.h +142 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.c +4005 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.h +162 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.c +4106 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.h +172 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.c +4490 -0
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.h +187 -0
- data/ext/multi_compress/vendor/zstd/lib/libzstd.mk +237 -0
- data/ext/multi_compress/vendor/zstd/lib/libzstd.pc.in +16 -0
- data/ext/multi_compress/vendor/zstd/lib/module.modulemap +35 -0
- data/ext/multi_compress/vendor/zstd/lib/zdict.h +474 -0
- data/ext/multi_compress/vendor/zstd/lib/zstd.h +3089 -0
- data/ext/multi_compress/vendor/zstd/lib/zstd_errors.h +114 -0
- data/lib/multi_compress/version.rb +5 -0
- data/lib/multi_compress.rb +329 -0
- metadata +322 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
|
8
|
+
* You may select, at your option, one of the above-listed licenses.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#ifndef ZSTD_ERRORS_H_398273423
|
|
12
|
+
#define ZSTD_ERRORS_H_398273423
|
|
13
|
+
|
|
14
|
+
#if defined (__cplusplus)
|
|
15
|
+
extern "C" {
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
/*===== dependency =====*/
|
|
19
|
+
#include <stddef.h> /* size_t */
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/* ===== ZSTDERRORLIB_API : control library symbols visibility ===== */
|
|
23
|
+
#ifndef ZSTDERRORLIB_VISIBLE
|
|
24
|
+
/* Backwards compatibility with old macro name */
|
|
25
|
+
# ifdef ZSTDERRORLIB_VISIBILITY
|
|
26
|
+
# define ZSTDERRORLIB_VISIBLE ZSTDERRORLIB_VISIBILITY
|
|
27
|
+
# elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__MINGW32__)
|
|
28
|
+
# define ZSTDERRORLIB_VISIBLE __attribute__ ((visibility ("default")))
|
|
29
|
+
# else
|
|
30
|
+
# define ZSTDERRORLIB_VISIBLE
|
|
31
|
+
# endif
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
#ifndef ZSTDERRORLIB_HIDDEN
|
|
35
|
+
# if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__MINGW32__)
|
|
36
|
+
# define ZSTDERRORLIB_HIDDEN __attribute__ ((visibility ("hidden")))
|
|
37
|
+
# else
|
|
38
|
+
# define ZSTDERRORLIB_HIDDEN
|
|
39
|
+
# endif
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1)
|
|
43
|
+
# define ZSTDERRORLIB_API __declspec(dllexport) ZSTDERRORLIB_VISIBLE
|
|
44
|
+
#elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1)
|
|
45
|
+
# define ZSTDERRORLIB_API __declspec(dllimport) ZSTDERRORLIB_VISIBLE /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/
|
|
46
|
+
#else
|
|
47
|
+
# define ZSTDERRORLIB_API ZSTDERRORLIB_VISIBLE
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
/*-*********************************************
|
|
51
|
+
* Error codes list
|
|
52
|
+
*-*********************************************
|
|
53
|
+
* Error codes _values_ are pinned down since v1.3.1 only.
|
|
54
|
+
* Therefore, don't rely on values if you may link to any version < v1.3.1.
|
|
55
|
+
*
|
|
56
|
+
* Only values < 100 are considered stable.
|
|
57
|
+
*
|
|
58
|
+
* note 1 : this API shall be used with static linking only.
|
|
59
|
+
* dynamic linking is not yet officially supported.
|
|
60
|
+
* note 2 : Prefer relying on the enum than on its value whenever possible
|
|
61
|
+
* This is the only supported way to use the error list < v1.3.1
|
|
62
|
+
* note 3 : ZSTD_isError() is always correct, whatever the library version.
|
|
63
|
+
**********************************************/
|
|
64
|
+
typedef enum {
|
|
65
|
+
ZSTD_error_no_error = 0,
|
|
66
|
+
ZSTD_error_GENERIC = 1,
|
|
67
|
+
ZSTD_error_prefix_unknown = 10,
|
|
68
|
+
ZSTD_error_version_unsupported = 12,
|
|
69
|
+
ZSTD_error_frameParameter_unsupported = 14,
|
|
70
|
+
ZSTD_error_frameParameter_windowTooLarge = 16,
|
|
71
|
+
ZSTD_error_corruption_detected = 20,
|
|
72
|
+
ZSTD_error_checksum_wrong = 22,
|
|
73
|
+
ZSTD_error_literals_headerWrong = 24,
|
|
74
|
+
ZSTD_error_dictionary_corrupted = 30,
|
|
75
|
+
ZSTD_error_dictionary_wrong = 32,
|
|
76
|
+
ZSTD_error_dictionaryCreation_failed = 34,
|
|
77
|
+
ZSTD_error_parameter_unsupported = 40,
|
|
78
|
+
ZSTD_error_parameter_combination_unsupported = 41,
|
|
79
|
+
ZSTD_error_parameter_outOfBound = 42,
|
|
80
|
+
ZSTD_error_tableLog_tooLarge = 44,
|
|
81
|
+
ZSTD_error_maxSymbolValue_tooLarge = 46,
|
|
82
|
+
ZSTD_error_maxSymbolValue_tooSmall = 48,
|
|
83
|
+
ZSTD_error_stabilityCondition_notRespected = 50,
|
|
84
|
+
ZSTD_error_stage_wrong = 60,
|
|
85
|
+
ZSTD_error_init_missing = 62,
|
|
86
|
+
ZSTD_error_memory_allocation = 64,
|
|
87
|
+
ZSTD_error_workSpace_tooSmall= 66,
|
|
88
|
+
ZSTD_error_dstSize_tooSmall = 70,
|
|
89
|
+
ZSTD_error_srcSize_wrong = 72,
|
|
90
|
+
ZSTD_error_dstBuffer_null = 74,
|
|
91
|
+
ZSTD_error_noForwardProgress_destFull = 80,
|
|
92
|
+
ZSTD_error_noForwardProgress_inputEmpty = 82,
|
|
93
|
+
/* following error codes are __NOT STABLE__, they can be removed or changed in future versions */
|
|
94
|
+
ZSTD_error_frameIndex_tooLarge = 100,
|
|
95
|
+
ZSTD_error_seekableIO = 102,
|
|
96
|
+
ZSTD_error_dstBuffer_wrong = 104,
|
|
97
|
+
ZSTD_error_srcBuffer_wrong = 105,
|
|
98
|
+
ZSTD_error_sequenceProducer_failed = 106,
|
|
99
|
+
ZSTD_error_externalSequences_invalid = 107,
|
|
100
|
+
ZSTD_error_maxCode = 120 /* never EVER use this value directly, it can change in future versions! Use ZSTD_isError() instead */
|
|
101
|
+
} ZSTD_ErrorCode;
|
|
102
|
+
|
|
103
|
+
/*! ZSTD_getErrorCode() :
|
|
104
|
+
convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
|
|
105
|
+
which can be used to compare with enum list published above */
|
|
106
|
+
ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
|
|
107
|
+
ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code); /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
#if defined (__cplusplus)
|
|
111
|
+
}
|
|
112
|
+
#endif
|
|
113
|
+
|
|
114
|
+
#endif /* ZSTD_ERRORS_H_398273423 */
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "multi_compress/version"
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
require "multi_compress/multi_compress"
|
|
7
|
+
rescue LoadError
|
|
8
|
+
ext_dir = File.expand_path("../multi_compress", __FILE__)
|
|
9
|
+
|
|
10
|
+
so_path = %w[.bundle .so]
|
|
11
|
+
.map { |ext| File.join(ext_dir, "multi_compress#{ext}") }
|
|
12
|
+
.find { |path| File.exist?(path) }
|
|
13
|
+
|
|
14
|
+
raise LoadError, "Could not find compiled MultiCompress extension. Run: bundle exec rake compile" unless so_path
|
|
15
|
+
|
|
16
|
+
require so_path
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module MultiCompress
|
|
20
|
+
FASTEST = :fastest
|
|
21
|
+
DEFAULT = :default
|
|
22
|
+
BEST = :best
|
|
23
|
+
|
|
24
|
+
EXTENSION_MAP = {
|
|
25
|
+
".zst" => :zstd,
|
|
26
|
+
".zstd" => :zstd,
|
|
27
|
+
".lz4" => :lz4,
|
|
28
|
+
".br" => :brotli,
|
|
29
|
+
}.freeze
|
|
30
|
+
|
|
31
|
+
private_constant :EXTENSION_MAP
|
|
32
|
+
|
|
33
|
+
def self.zstd(data, level: nil)
|
|
34
|
+
compress(data, algo: :zstd, **level_opts(level))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.lz4(data, level: nil)
|
|
38
|
+
compress(data, algo: :lz4, **level_opts(level))
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.brotli(data, level: nil)
|
|
42
|
+
compress(data, algo: :brotli, **level_opts(level))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.zstd_decompress(data)
|
|
46
|
+
decompress(data, algo: :zstd)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.lz4_decompress(data)
|
|
50
|
+
decompress(data, algo: :lz4)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.brotli_decompress(data)
|
|
54
|
+
decompress(data, algo: :brotli)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def self.algo_from_ext(path)
|
|
58
|
+
EXTENSION_MAP[File.extname(path).downcase]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.level_opts(level)
|
|
62
|
+
level ? { level: level } : {}
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private_class_method :level_opts
|
|
66
|
+
|
|
67
|
+
# Streaming compressed writer.
|
|
68
|
+
#
|
|
69
|
+
# Supports block form via +Writer.open+ or manual lifecycle management.
|
|
70
|
+
class Writer
|
|
71
|
+
CHUNK_BUFFER_SIZE = 8192
|
|
72
|
+
|
|
73
|
+
def self.open(path_or_io, algo: nil, level: nil, dictionary: nil, &block)
|
|
74
|
+
io, algo, owned = resolve_io(path_or_io, algo, mode: "wb")
|
|
75
|
+
writer = new(io, algo: algo || :zstd, level: level, dictionary: dictionary)
|
|
76
|
+
writer.instance_variable_set(:@owned_io, owned)
|
|
77
|
+
|
|
78
|
+
return writer unless block
|
|
79
|
+
|
|
80
|
+
begin
|
|
81
|
+
yield writer
|
|
82
|
+
ensure
|
|
83
|
+
writer.close
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def initialize(io, algo: :zstd, level: nil, dictionary: nil)
|
|
88
|
+
@io = io
|
|
89
|
+
@deflater = Deflater.new(algo: algo, level: level, dictionary: dictionary)
|
|
90
|
+
@closed = false
|
|
91
|
+
@owned_io = false
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def write(data)
|
|
95
|
+
ensure_open!
|
|
96
|
+
bytes = data.to_s
|
|
97
|
+
flush_compressed(@deflater.write(bytes))
|
|
98
|
+
bytes.bytesize
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def flush
|
|
102
|
+
ensure_open!
|
|
103
|
+
flush_compressed(@deflater.flush)
|
|
104
|
+
@io.flush if @io.respond_to?(:flush)
|
|
105
|
+
self
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def close
|
|
109
|
+
return if @closed
|
|
110
|
+
|
|
111
|
+
flush_compressed(@deflater.finish)
|
|
112
|
+
@deflater.close
|
|
113
|
+
@io.close if @owned_io && @io.respond_to?(:close)
|
|
114
|
+
@closed = true
|
|
115
|
+
nil
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def closed?
|
|
119
|
+
@closed
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def <<(data)
|
|
123
|
+
write(data)
|
|
124
|
+
self
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def puts(*args)
|
|
128
|
+
args.each do |arg|
|
|
129
|
+
str = arg.to_s
|
|
130
|
+
write(str)
|
|
131
|
+
write("\n") unless str.end_with?("\n")
|
|
132
|
+
end
|
|
133
|
+
nil
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def print(*args)
|
|
137
|
+
args.each { |arg| write(arg.to_s) }
|
|
138
|
+
nil
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
private
|
|
142
|
+
|
|
143
|
+
def ensure_open!
|
|
144
|
+
raise StreamError, "writer is closed" if @closed
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def flush_compressed(compressed)
|
|
148
|
+
@io.write(compressed) if compressed && !compressed.empty?
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def self.resolve_io(path_or_io, algo, mode:)
|
|
152
|
+
if path_or_io.is_a?(String)
|
|
153
|
+
[File.open(path_or_io, mode), algo || MultiCompress.algo_from_ext(path_or_io), true]
|
|
154
|
+
else
|
|
155
|
+
[path_or_io, algo, false]
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
private_class_method :resolve_io
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Streaming compressed reader.
|
|
163
|
+
#
|
|
164
|
+
# Supports block form via +Reader.open+ or manual lifecycle management.
|
|
165
|
+
class Reader
|
|
166
|
+
CHUNK_SIZE = 8192
|
|
167
|
+
|
|
168
|
+
def self.open(path_or_io, algo: nil, dictionary: nil, &block)
|
|
169
|
+
io, algo, owned = resolve_io(path_or_io, algo, mode: "rb")
|
|
170
|
+
reader = new(io, algo: algo, dictionary: dictionary)
|
|
171
|
+
reader.instance_variable_set(:@owned_io, owned)
|
|
172
|
+
|
|
173
|
+
return reader unless block
|
|
174
|
+
|
|
175
|
+
begin
|
|
176
|
+
yield reader
|
|
177
|
+
ensure
|
|
178
|
+
reader.close
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def initialize(io, algo: nil, dictionary: nil)
|
|
183
|
+
@io = io
|
|
184
|
+
@inflater = Inflater.new(algo: algo, dictionary: dictionary)
|
|
185
|
+
@closed = false
|
|
186
|
+
@owned_io = false
|
|
187
|
+
@buffer = +""
|
|
188
|
+
@eof = false
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def read(length = nil)
|
|
192
|
+
ensure_open!
|
|
193
|
+
return read_all if length.nil?
|
|
194
|
+
|
|
195
|
+
read_exactly(length)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def gets(separator = "\n")
|
|
199
|
+
ensure_open!
|
|
200
|
+
return nil if @eof && @buffer.empty?
|
|
201
|
+
|
|
202
|
+
fill_buffer_until { @buffer.include?(separator) }
|
|
203
|
+
|
|
204
|
+
return extract_line(separator) if @buffer.include?(separator)
|
|
205
|
+
return consume_buffer unless @buffer.empty?
|
|
206
|
+
|
|
207
|
+
nil
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def close
|
|
211
|
+
return if @closed
|
|
212
|
+
|
|
213
|
+
@inflater.close
|
|
214
|
+
@io.close if @owned_io && @io.respond_to?(:close)
|
|
215
|
+
@closed = true
|
|
216
|
+
nil
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def closed?
|
|
220
|
+
@closed
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def eof?
|
|
224
|
+
@eof && @buffer.empty?
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def each_line
|
|
228
|
+
return enum_for(:each_line) unless block_given?
|
|
229
|
+
|
|
230
|
+
while (line = gets)
|
|
231
|
+
yield line
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def each_chunk(size)
|
|
236
|
+
return enum_for(:each_chunk, size) unless block_given?
|
|
237
|
+
|
|
238
|
+
while (chunk = read(size))
|
|
239
|
+
yield chunk
|
|
240
|
+
break if chunk.bytesize < size
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def readline
|
|
245
|
+
gets || raise(EOFError, "end of file reached")
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
private
|
|
249
|
+
|
|
250
|
+
def ensure_open!
|
|
251
|
+
raise StreamError, "reader is closed" if @closed
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def read_all
|
|
255
|
+
return nil if @eof && @buffer.empty?
|
|
256
|
+
|
|
257
|
+
result = @buffer.dup
|
|
258
|
+
@buffer.clear
|
|
259
|
+
|
|
260
|
+
until @eof
|
|
261
|
+
chunk = read_compressed_chunk
|
|
262
|
+
break unless chunk && !chunk.empty?
|
|
263
|
+
|
|
264
|
+
decompressed = @inflater.write(chunk)
|
|
265
|
+
result << decompressed if decompressed
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
final = @inflater.finish
|
|
269
|
+
result << final if final && !final.empty?
|
|
270
|
+
|
|
271
|
+
result.empty? ? nil : result
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
def read_exactly(length)
|
|
275
|
+
return +("") if @eof && @buffer.empty?
|
|
276
|
+
|
|
277
|
+
fill_buffer_until { @buffer.bytesize >= length }
|
|
278
|
+
|
|
279
|
+
if @buffer.bytesize >= length
|
|
280
|
+
result = @buffer[0, length]
|
|
281
|
+
@buffer = @buffer[length..]
|
|
282
|
+
result
|
|
283
|
+
elsif !@buffer.empty?
|
|
284
|
+
consume_buffer
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def fill_buffer_until
|
|
289
|
+
until yield || @eof
|
|
290
|
+
chunk = read_compressed_chunk
|
|
291
|
+
if chunk.nil? || chunk.empty?
|
|
292
|
+
@eof = true
|
|
293
|
+
break
|
|
294
|
+
end
|
|
295
|
+
decompressed = @inflater.write(chunk)
|
|
296
|
+
@buffer << decompressed if decompressed
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def extract_line(separator)
|
|
301
|
+
idx = @buffer.index(separator)
|
|
302
|
+
result = @buffer[0..idx]
|
|
303
|
+
@buffer = @buffer[(idx + 1)..]
|
|
304
|
+
result
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def consume_buffer
|
|
308
|
+
result = @buffer
|
|
309
|
+
@buffer = +""
|
|
310
|
+
result
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
def read_compressed_chunk
|
|
314
|
+
@io.read(CHUNK_SIZE)
|
|
315
|
+
rescue EOFError
|
|
316
|
+
nil
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def self.resolve_io(path_or_io, algo, mode:)
|
|
320
|
+
if path_or_io.is_a?(String)
|
|
321
|
+
[File.open(path_or_io, mode), algo || MultiCompress.algo_from_ext(path_or_io), true]
|
|
322
|
+
else
|
|
323
|
+
[path_or_io, algo, false]
|
|
324
|
+
end
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
private_class_method :resolve_io
|
|
328
|
+
end
|
|
329
|
+
end
|