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.
Files changed (219) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +13 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +116 -0
  5. data/ext/multi_compress/extconf.rb +171 -0
  6. data/ext/multi_compress/multi_compress.c +1534 -0
  7. data/ext/multi_compress/vendor/brotli/c/common/constants.c +15 -0
  8. data/ext/multi_compress/vendor/brotli/c/common/constants.h +201 -0
  9. data/ext/multi_compress/vendor/brotli/c/common/context.c +156 -0
  10. data/ext/multi_compress/vendor/brotli/c/common/context.h +113 -0
  11. data/ext/multi_compress/vendor/brotli/c/common/dictionary.c +5916 -0
  12. data/ext/multi_compress/vendor/brotli/c/common/dictionary.h +64 -0
  13. data/ext/multi_compress/vendor/brotli/c/common/platform.c +23 -0
  14. data/ext/multi_compress/vendor/brotli/c/common/platform.h +541 -0
  15. data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary.c +521 -0
  16. data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary_internal.h +75 -0
  17. data/ext/multi_compress/vendor/brotli/c/common/transform.c +291 -0
  18. data/ext/multi_compress/vendor/brotli/c/common/transform.h +85 -0
  19. data/ext/multi_compress/vendor/brotli/c/common/version.h +51 -0
  20. data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.c +78 -0
  21. data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.h +423 -0
  22. data/ext/multi_compress/vendor/brotli/c/dec/decode.c +2875 -0
  23. data/ext/multi_compress/vendor/brotli/c/dec/huffman.c +342 -0
  24. data/ext/multi_compress/vendor/brotli/c/dec/huffman.h +122 -0
  25. data/ext/multi_compress/vendor/brotli/c/dec/prefix.h +733 -0
  26. data/ext/multi_compress/vendor/brotli/c/dec/state.c +183 -0
  27. data/ext/multi_compress/vendor/brotli/c/dec/state.h +400 -0
  28. data/ext/multi_compress/vendor/brotli/c/enc/backward_references.c +207 -0
  29. data/ext/multi_compress/vendor/brotli/c/enc/backward_references.h +40 -0
  30. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.c +939 -0
  31. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.h +96 -0
  32. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_inc.h +189 -0
  33. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.c +36 -0
  34. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.h +64 -0
  35. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  36. data/ext/multi_compress/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  37. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.c +217 -0
  38. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.h +52 -0
  39. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter_inc.h +481 -0
  40. data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.c +1336 -0
  41. data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.h +89 -0
  42. data/ext/multi_compress/vendor/brotli/c/enc/cluster.c +57 -0
  43. data/ext/multi_compress/vendor/brotli/c/enc/cluster.h +49 -0
  44. data/ext/multi_compress/vendor/brotli/c/enc/cluster_inc.h +325 -0
  45. data/ext/multi_compress/vendor/brotli/c/enc/command.c +28 -0
  46. data/ext/multi_compress/vendor/brotli/c/enc/command.h +191 -0
  47. data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.c +207 -0
  48. data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.h +74 -0
  49. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.c +800 -0
  50. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.h +86 -0
  51. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.c +657 -0
  52. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.h +72 -0
  53. data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.c +1848 -0
  54. data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  55. data/ext/multi_compress/vendor/brotli/c/enc/encode.c +1996 -0
  56. data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.c +640 -0
  57. data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.h +157 -0
  58. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.c +504 -0
  59. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.h +123 -0
  60. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode_static.h +542 -0
  61. data/ext/multi_compress/vendor/brotli/c/enc/fast_log.c +105 -0
  62. data/ext/multi_compress/vendor/brotli/c/enc/fast_log.h +67 -0
  63. data/ext/multi_compress/vendor/brotli/c/enc/find_match_length.h +72 -0
  64. data/ext/multi_compress/vendor/brotli/c/enc/hash.h +728 -0
  65. data/ext/multi_compress/vendor/brotli/c/enc/hash_composite_inc.h +140 -0
  66. data/ext/multi_compress/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +295 -0
  67. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match64_inc.h +262 -0
  68. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_inc.h +258 -0
  69. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  70. data/ext/multi_compress/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  71. data/ext/multi_compress/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +330 -0
  72. data/ext/multi_compress/vendor/brotli/c/enc/histogram.c +100 -0
  73. data/ext/multi_compress/vendor/brotli/c/enc/histogram.h +64 -0
  74. data/ext/multi_compress/vendor/brotli/c/enc/histogram_inc.h +51 -0
  75. data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.c +180 -0
  76. data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.h +32 -0
  77. data/ext/multi_compress/vendor/brotli/c/enc/memory.c +194 -0
  78. data/ext/multi_compress/vendor/brotli/c/enc/memory.h +131 -0
  79. data/ext/multi_compress/vendor/brotli/c/enc/metablock.c +677 -0
  80. data/ext/multi_compress/vendor/brotli/c/enc/metablock.h +106 -0
  81. data/ext/multi_compress/vendor/brotli/c/enc/metablock_inc.h +185 -0
  82. data/ext/multi_compress/vendor/brotli/c/enc/params.h +47 -0
  83. data/ext/multi_compress/vendor/brotli/c/enc/prefix.h +54 -0
  84. data/ext/multi_compress/vendor/brotli/c/enc/quality.h +202 -0
  85. data/ext/multi_compress/vendor/brotli/c/enc/ringbuffer.h +168 -0
  86. data/ext/multi_compress/vendor/brotli/c/enc/state.h +104 -0
  87. data/ext/multi_compress/vendor/brotli/c/enc/static_dict.c +542 -0
  88. data/ext/multi_compress/vendor/brotli/c/enc/static_dict.h +41 -0
  89. data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut.h +5866 -0
  90. data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.c +85 -0
  91. data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.h +33 -0
  92. data/ext/multi_compress/vendor/brotli/c/enc/write_bits.h +88 -0
  93. data/ext/multi_compress/vendor/brotli/c/include/brotli/decode.h +409 -0
  94. data/ext/multi_compress/vendor/brotli/c/include/brotli/encode.h +501 -0
  95. data/ext/multi_compress/vendor/brotli/c/include/brotli/port.h +305 -0
  96. data/ext/multi_compress/vendor/brotli/c/include/brotli/shared_dictionary.h +100 -0
  97. data/ext/multi_compress/vendor/brotli/c/include/brotli/types.h +83 -0
  98. data/ext/multi_compress/vendor/lz4/lib/LICENSE +24 -0
  99. data/ext/multi_compress/vendor/lz4/lib/Makefile +244 -0
  100. data/ext/multi_compress/vendor/lz4/lib/README.md +193 -0
  101. data/ext/multi_compress/vendor/lz4/lib/dll/example/Makefile +63 -0
  102. data/ext/multi_compress/vendor/lz4/lib/dll/example/README.md +69 -0
  103. data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.sln +25 -0
  104. data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.vcxproj +182 -0
  105. data/ext/multi_compress/vendor/lz4/lib/liblz4-dll.rc.in +35 -0
  106. data/ext/multi_compress/vendor/lz4/lib/liblz4.pc.in +14 -0
  107. data/ext/multi_compress/vendor/lz4/lib/lz4.c +2829 -0
  108. data/ext/multi_compress/vendor/lz4/lib/lz4.h +884 -0
  109. data/ext/multi_compress/vendor/lz4/lib/lz4file.c +341 -0
  110. data/ext/multi_compress/vendor/lz4/lib/lz4file.h +93 -0
  111. data/ext/multi_compress/vendor/lz4/lib/lz4frame.c +2136 -0
  112. data/ext/multi_compress/vendor/lz4/lib/lz4frame.h +751 -0
  113. data/ext/multi_compress/vendor/lz4/lib/lz4frame_static.h +47 -0
  114. data/ext/multi_compress/vendor/lz4/lib/lz4hc.c +2192 -0
  115. data/ext/multi_compress/vendor/lz4/lib/lz4hc.h +414 -0
  116. data/ext/multi_compress/vendor/lz4/lib/xxhash.c +1030 -0
  117. data/ext/multi_compress/vendor/lz4/lib/xxhash.h +328 -0
  118. data/ext/multi_compress/vendor/zstd/lib/BUCK +232 -0
  119. data/ext/multi_compress/vendor/zstd/lib/Makefile +369 -0
  120. data/ext/multi_compress/vendor/zstd/lib/README.md +237 -0
  121. data/ext/multi_compress/vendor/zstd/lib/common/allocations.h +55 -0
  122. data/ext/multi_compress/vendor/zstd/lib/common/bits.h +200 -0
  123. data/ext/multi_compress/vendor/zstd/lib/common/bitstream.h +457 -0
  124. data/ext/multi_compress/vendor/zstd/lib/common/compiler.h +450 -0
  125. data/ext/multi_compress/vendor/zstd/lib/common/cpu.h +249 -0
  126. data/ext/multi_compress/vendor/zstd/lib/common/debug.c +30 -0
  127. data/ext/multi_compress/vendor/zstd/lib/common/debug.h +116 -0
  128. data/ext/multi_compress/vendor/zstd/lib/common/entropy_common.c +340 -0
  129. data/ext/multi_compress/vendor/zstd/lib/common/error_private.c +63 -0
  130. data/ext/multi_compress/vendor/zstd/lib/common/error_private.h +168 -0
  131. data/ext/multi_compress/vendor/zstd/lib/common/fse.h +640 -0
  132. data/ext/multi_compress/vendor/zstd/lib/common/fse_decompress.c +313 -0
  133. data/ext/multi_compress/vendor/zstd/lib/common/huf.h +286 -0
  134. data/ext/multi_compress/vendor/zstd/lib/common/mem.h +426 -0
  135. data/ext/multi_compress/vendor/zstd/lib/common/pool.c +371 -0
  136. data/ext/multi_compress/vendor/zstd/lib/common/pool.h +90 -0
  137. data/ext/multi_compress/vendor/zstd/lib/common/portability_macros.h +158 -0
  138. data/ext/multi_compress/vendor/zstd/lib/common/threading.c +182 -0
  139. data/ext/multi_compress/vendor/zstd/lib/common/threading.h +150 -0
  140. data/ext/multi_compress/vendor/zstd/lib/common/xxhash.c +18 -0
  141. data/ext/multi_compress/vendor/zstd/lib/common/xxhash.h +7020 -0
  142. data/ext/multi_compress/vendor/zstd/lib/common/zstd_common.c +48 -0
  143. data/ext/multi_compress/vendor/zstd/lib/common/zstd_deps.h +111 -0
  144. data/ext/multi_compress/vendor/zstd/lib/common/zstd_internal.h +392 -0
  145. data/ext/multi_compress/vendor/zstd/lib/common/zstd_trace.h +163 -0
  146. data/ext/multi_compress/vendor/zstd/lib/compress/clevels.h +134 -0
  147. data/ext/multi_compress/vendor/zstd/lib/compress/fse_compress.c +625 -0
  148. data/ext/multi_compress/vendor/zstd/lib/compress/hist.c +181 -0
  149. data/ext/multi_compress/vendor/zstd/lib/compress/hist.h +75 -0
  150. data/ext/multi_compress/vendor/zstd/lib/compress/huf_compress.c +1464 -0
  151. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress.c +7153 -0
  152. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_internal.h +1534 -0
  153. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.c +235 -0
  154. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.h +39 -0
  155. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.c +442 -0
  156. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.h +54 -0
  157. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.c +688 -0
  158. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.h +32 -0
  159. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_cwksp.h +748 -0
  160. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.c +770 -0
  161. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.h +50 -0
  162. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.c +968 -0
  163. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.h +38 -0
  164. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.c +2199 -0
  165. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.h +202 -0
  166. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.c +730 -0
  167. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.h +117 -0
  168. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
  169. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.c +1576 -0
  170. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.h +80 -0
  171. data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.c +1882 -0
  172. data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.h +113 -0
  173. data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress.c +1944 -0
  174. data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress_amd64.S +595 -0
  175. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.c +244 -0
  176. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.h +44 -0
  177. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress.c +2407 -0
  178. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.c +2215 -0
  179. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.h +73 -0
  180. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
  181. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff.h +214 -0
  182. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_common.c +26 -0
  183. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_compress.c +167 -0
  184. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_decompress.c +77 -0
  185. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.c +1261 -0
  186. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.h +152 -0
  187. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.c +1913 -0
  188. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.h +67 -0
  189. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/fastcover.c +766 -0
  190. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/zdict.c +1133 -0
  191. data/ext/multi_compress/vendor/zstd/lib/dll/example/Makefile +48 -0
  192. data/ext/multi_compress/vendor/zstd/lib/dll/example/README.md +63 -0
  193. data/ext/multi_compress/vendor/zstd/lib/dll/example/build_package.bat +20 -0
  194. data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.sln +25 -0
  195. data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
  196. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_legacy.h +452 -0
  197. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.c +2127 -0
  198. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.h +94 -0
  199. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.c +3465 -0
  200. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.h +93 -0
  201. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.c +3105 -0
  202. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.h +93 -0
  203. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.c +3598 -0
  204. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.h +142 -0
  205. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.c +4005 -0
  206. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.h +162 -0
  207. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.c +4106 -0
  208. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.h +172 -0
  209. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.c +4490 -0
  210. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.h +187 -0
  211. data/ext/multi_compress/vendor/zstd/lib/libzstd.mk +237 -0
  212. data/ext/multi_compress/vendor/zstd/lib/libzstd.pc.in +16 -0
  213. data/ext/multi_compress/vendor/zstd/lib/module.modulemap +35 -0
  214. data/ext/multi_compress/vendor/zstd/lib/zdict.h +474 -0
  215. data/ext/multi_compress/vendor/zstd/lib/zstd.h +3089 -0
  216. data/ext/multi_compress/vendor/zstd/lib/zstd_errors.h +114 -0
  217. data/lib/multi_compress/version.rb +5 -0
  218. data/lib/multi_compress.rb +329 -0
  219. 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,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MultiCompress
4
+ VERSION = "0.1.0"
5
+ end
@@ -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