extzstd 0.0.3.CONCEPT → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY.ja.md +39 -0
  3. data/LICENSE +6 -6
  4. data/README.md +26 -45
  5. data/contrib/zstd/CHANGELOG +555 -0
  6. data/contrib/zstd/CODE_OF_CONDUCT.md +5 -0
  7. data/contrib/zstd/CONTRIBUTING.md +392 -0
  8. data/contrib/zstd/COPYING +339 -0
  9. data/contrib/zstd/LICENSE +13 -9
  10. data/contrib/zstd/Makefile +414 -0
  11. data/contrib/zstd/README.md +170 -45
  12. data/contrib/zstd/TESTING.md +44 -0
  13. data/contrib/zstd/appveyor.yml +289 -0
  14. data/contrib/zstd/lib/BUCK +234 -0
  15. data/contrib/zstd/lib/Makefile +354 -0
  16. data/contrib/zstd/lib/README.md +179 -0
  17. data/contrib/zstd/{common → lib/common}/bitstream.h +170 -130
  18. data/contrib/zstd/lib/common/compiler.h +175 -0
  19. data/contrib/zstd/lib/common/cpu.h +215 -0
  20. data/contrib/zstd/lib/common/debug.c +24 -0
  21. data/contrib/zstd/lib/common/debug.h +114 -0
  22. data/contrib/zstd/{common → lib/common}/entropy_common.c +79 -94
  23. data/contrib/zstd/lib/common/error_private.c +55 -0
  24. data/contrib/zstd/lib/common/error_private.h +80 -0
  25. data/contrib/zstd/{common → lib/common}/fse.h +153 -93
  26. data/contrib/zstd/{common → lib/common}/fse_decompress.c +37 -82
  27. data/contrib/zstd/lib/common/huf.h +340 -0
  28. data/contrib/zstd/{common → lib/common}/mem.h +154 -78
  29. data/contrib/zstd/lib/common/pool.c +344 -0
  30. data/contrib/zstd/lib/common/pool.h +84 -0
  31. data/contrib/zstd/lib/common/threading.c +121 -0
  32. data/contrib/zstd/lib/common/threading.h +155 -0
  33. data/contrib/zstd/{common → lib/common}/xxhash.c +85 -75
  34. data/contrib/zstd/{common → lib/common}/xxhash.h +85 -73
  35. data/contrib/zstd/lib/common/zstd_common.c +83 -0
  36. data/contrib/zstd/lib/common/zstd_errors.h +94 -0
  37. data/contrib/zstd/lib/common/zstd_internal.h +447 -0
  38. data/contrib/zstd/{compress → lib/compress}/fse_compress.c +194 -303
  39. data/contrib/zstd/lib/compress/hist.c +183 -0
  40. data/contrib/zstd/lib/compress/hist.h +75 -0
  41. data/contrib/zstd/lib/compress/huf_compress.c +798 -0
  42. data/contrib/zstd/lib/compress/zstd_compress.c +4278 -0
  43. data/contrib/zstd/lib/compress/zstd_compress_internal.h +1125 -0
  44. data/contrib/zstd/lib/compress/zstd_compress_literals.c +158 -0
  45. data/contrib/zstd/lib/compress/zstd_compress_literals.h +29 -0
  46. data/contrib/zstd/lib/compress/zstd_compress_sequences.c +419 -0
  47. data/contrib/zstd/lib/compress/zstd_compress_sequences.h +54 -0
  48. data/contrib/zstd/lib/compress/zstd_compress_superblock.c +845 -0
  49. data/contrib/zstd/lib/compress/zstd_compress_superblock.h +32 -0
  50. data/contrib/zstd/lib/compress/zstd_cwksp.h +525 -0
  51. data/contrib/zstd/lib/compress/zstd_double_fast.c +521 -0
  52. data/contrib/zstd/lib/compress/zstd_double_fast.h +38 -0
  53. data/contrib/zstd/lib/compress/zstd_fast.c +496 -0
  54. data/contrib/zstd/lib/compress/zstd_fast.h +37 -0
  55. data/contrib/zstd/lib/compress/zstd_lazy.c +1138 -0
  56. data/contrib/zstd/lib/compress/zstd_lazy.h +67 -0
  57. data/contrib/zstd/lib/compress/zstd_ldm.c +619 -0
  58. data/contrib/zstd/lib/compress/zstd_ldm.h +110 -0
  59. data/contrib/zstd/lib/compress/zstd_opt.c +1200 -0
  60. data/contrib/zstd/lib/compress/zstd_opt.h +56 -0
  61. data/contrib/zstd/lib/compress/zstdmt_compress.c +2143 -0
  62. data/contrib/zstd/lib/compress/zstdmt_compress.h +192 -0
  63. data/contrib/zstd/lib/decompress/huf_decompress.c +1248 -0
  64. data/contrib/zstd/lib/decompress/zstd_ddict.c +244 -0
  65. data/contrib/zstd/lib/decompress/zstd_ddict.h +44 -0
  66. data/contrib/zstd/lib/decompress/zstd_decompress.c +1885 -0
  67. data/contrib/zstd/lib/decompress/zstd_decompress_block.c +1432 -0
  68. data/contrib/zstd/lib/decompress/zstd_decompress_block.h +59 -0
  69. data/contrib/zstd/lib/decompress/zstd_decompress_internal.h +189 -0
  70. data/contrib/zstd/{common → lib/deprecated}/zbuff.h +86 -69
  71. data/contrib/zstd/lib/deprecated/zbuff_common.c +26 -0
  72. data/contrib/zstd/lib/deprecated/zbuff_compress.c +147 -0
  73. data/contrib/zstd/lib/deprecated/zbuff_decompress.c +75 -0
  74. data/contrib/zstd/lib/dictBuilder/cover.c +1236 -0
  75. data/contrib/zstd/lib/dictBuilder/cover.h +157 -0
  76. data/contrib/zstd/{dictBuilder → lib/dictBuilder}/divsufsort.c +3 -3
  77. data/contrib/zstd/{dictBuilder → lib/dictBuilder}/divsufsort.h +5 -5
  78. data/contrib/zstd/lib/dictBuilder/fastcover.c +757 -0
  79. data/contrib/zstd/{dictBuilder → lib/dictBuilder}/zdict.c +437 -347
  80. data/contrib/zstd/lib/dictBuilder/zdict.h +305 -0
  81. data/contrib/zstd/lib/legacy/zstd_legacy.h +415 -0
  82. data/contrib/zstd/{legacy → lib/legacy}/zstd_v01.c +272 -292
  83. data/contrib/zstd/{legacy → lib/legacy}/zstd_v01.h +26 -32
  84. data/contrib/zstd/{legacy → lib/legacy}/zstd_v02.c +162 -392
  85. data/contrib/zstd/{legacy → lib/legacy}/zstd_v02.h +26 -32
  86. data/contrib/zstd/{legacy → lib/legacy}/zstd_v03.c +162 -391
  87. data/contrib/zstd/{legacy → lib/legacy}/zstd_v03.h +27 -33
  88. data/contrib/zstd/{legacy → lib/legacy}/zstd_v04.c +195 -604
  89. data/contrib/zstd/{legacy → lib/legacy}/zstd_v04.h +26 -32
  90. data/contrib/zstd/{legacy → lib/legacy}/zstd_v05.c +300 -575
  91. data/contrib/zstd/{legacy → lib/legacy}/zstd_v05.h +22 -31
  92. data/contrib/zstd/{legacy → lib/legacy}/zstd_v06.c +165 -592
  93. data/contrib/zstd/{legacy → lib/legacy}/zstd_v06.h +54 -67
  94. data/contrib/zstd/lib/legacy/zstd_v07.c +4541 -0
  95. data/contrib/zstd/lib/legacy/zstd_v07.h +187 -0
  96. data/contrib/zstd/lib/libzstd.pc.in +15 -0
  97. data/contrib/zstd/lib/zstd.h +2090 -0
  98. data/ext/depend +2 -0
  99. data/ext/extconf.rb +18 -5
  100. data/ext/extzstd.c +296 -214
  101. data/ext/extzstd.h +81 -36
  102. data/ext/extzstd_nogvls.h +0 -117
  103. data/ext/extzstd_stream.c +622 -0
  104. data/ext/libzstd_conf.h +8 -0
  105. data/ext/zstd_common.c +11 -0
  106. data/ext/zstd_compress.c +15 -0
  107. data/ext/zstd_decompress.c +6 -0
  108. data/ext/zstd_dictbuilder.c +10 -0
  109. data/ext/zstd_dictbuilder_fastcover.c +3 -0
  110. data/ext/zstd_legacy_v01.c +3 -1
  111. data/ext/zstd_legacy_v02.c +3 -1
  112. data/ext/zstd_legacy_v03.c +3 -1
  113. data/ext/zstd_legacy_v04.c +3 -1
  114. data/ext/zstd_legacy_v05.c +3 -1
  115. data/ext/zstd_legacy_v06.c +3 -1
  116. data/ext/zstd_legacy_v07.c +3 -0
  117. data/gemstub.rb +27 -21
  118. data/lib/extzstd.rb +82 -161
  119. data/lib/extzstd/version.rb +1 -1
  120. data/test/test_basic.rb +19 -6
  121. metadata +127 -59
  122. data/contrib/zstd/common/error_private.h +0 -125
  123. data/contrib/zstd/common/error_public.h +0 -77
  124. data/contrib/zstd/common/huf.h +0 -228
  125. data/contrib/zstd/common/zstd.h +0 -475
  126. data/contrib/zstd/common/zstd_common.c +0 -91
  127. data/contrib/zstd/common/zstd_internal.h +0 -238
  128. data/contrib/zstd/compress/huf_compress.c +0 -577
  129. data/contrib/zstd/compress/zbuff_compress.c +0 -327
  130. data/contrib/zstd/compress/zstd_compress.c +0 -3074
  131. data/contrib/zstd/compress/zstd_opt.h +0 -1046
  132. data/contrib/zstd/decompress/huf_decompress.c +0 -894
  133. data/contrib/zstd/decompress/zbuff_decompress.c +0 -294
  134. data/contrib/zstd/decompress/zstd_decompress.c +0 -1362
  135. data/contrib/zstd/dictBuilder/zdict.h +0 -113
  136. data/contrib/zstd/legacy/zstd_legacy.h +0 -140
  137. data/ext/extzstd_buffered.c +0 -265
  138. data/ext/zstd_amalgam.c +0 -18
@@ -1,35 +1,15 @@
1
1
  /*
2
- xxHash - Extremely Fast Hash algorithm
3
- Header File
4
- Copyright (C) 2012-2016, Yann Collet.
5
-
6
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
7
-
8
- Redistribution and use in source and binary forms, with or without
9
- modification, are permitted provided that the following conditions are
10
- met:
11
-
12
- * Redistributions of source code must retain the above copyright
13
- notice, this list of conditions and the following disclaimer.
14
- * Redistributions in binary form must reproduce the above
15
- copyright notice, this list of conditions and the following disclaimer
16
- in the documentation and/or other materials provided with the
17
- distribution.
18
-
19
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
- You can contact the author at :
32
- - xxHash source repository : https://github.com/Cyan4973/xxHash
2
+ * xxHash - Extremely Fast Hash algorithm
3
+ * Header File
4
+ * Copyright (c) 2012-2020, Yann Collet, Facebook, Inc.
5
+ *
6
+ * You can contact the author at :
7
+ * - xxHash source repository : https://github.com/Cyan4973/xxHash
8
+ *
9
+ * This source code is licensed under both the BSD-style license (found in the
10
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
11
+ * in the COPYING file in the root directory of this source tree).
12
+ * You may select, at your option, one of the above-listed licenses.
33
13
  */
34
14
 
35
15
  /* Notice extracted from xxHash homepage :
@@ -64,13 +44,13 @@ XXH64 13.8 GB/s 1.9 GB/s
64
44
  XXH32 6.8 GB/s 6.0 GB/s
65
45
  */
66
46
 
67
- #ifndef XXHASH_H_5627135585666179
68
- #define XXHASH_H_5627135585666179 1
69
-
70
47
  #if defined (__cplusplus)
71
48
  extern "C" {
72
49
  #endif
73
50
 
51
+ #ifndef XXHASH_H_5627135585666179
52
+ #define XXHASH_H_5627135585666179 1
53
+
74
54
 
75
55
  /* ****************************
76
56
  * Definitions
@@ -82,18 +62,21 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
82
62
  /* ****************************
83
63
  * API modifier
84
64
  ******************************/
85
- /*!XXH_PRIVATE_API
86
- * Transforms all publics symbols within `xxhash.c` into private ones.
87
- * Methodology :
88
- * instead of : #include "xxhash.h"
89
- * do :
65
+ /** XXH_PRIVATE_API
66
+ * This is useful if you want to include xxhash functions in `static` mode
67
+ * in order to inline them, and remove their symbol from the public list.
68
+ * Methodology :
90
69
  * #define XXH_PRIVATE_API
91
- * #include "xxhash.c" // note the .c , instead of .h
92
- * also : don't compile and link xxhash.c separately
70
+ * #include "xxhash.h"
71
+ * `xxhash.c` is automatically included.
72
+ * It's not useful to compile and link it as a separate module anymore.
93
73
  */
94
74
  #ifdef XXH_PRIVATE_API
75
+ # ifndef XXH_STATIC_LINKING_ONLY
76
+ # define XXH_STATIC_LINKING_ONLY
77
+ # endif
95
78
  # if defined(__GNUC__)
96
- # define XXH_PUBLIC_API static __attribute__((unused))
79
+ # define XXH_PUBLIC_API static __inline __attribute__((unused))
97
80
  # elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
98
81
  # define XXH_PUBLIC_API static inline
99
82
  # elif defined(_MSC_VER)
@@ -103,17 +86,17 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
103
86
  # endif
104
87
  #else
105
88
  # define XXH_PUBLIC_API /* do nothing */
106
- #endif
89
+ #endif /* XXH_PRIVATE_API */
107
90
 
108
91
  /*!XXH_NAMESPACE, aka Namespace Emulation :
109
92
 
110
93
  If you want to include _and expose_ xxHash functions from within your own library,
111
94
  but also want to avoid symbol collisions with another library which also includes xxHash,
112
95
 
113
- you can use XXH_NAMESPACE, to automatically prefix any public symbol from `xxhash.c`
96
+ you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library
114
97
  with the value of XXH_NAMESPACE (so avoid to keep it NULL and avoid numeric values).
115
98
 
116
- Note that no change is required within the calling program as long as it also includes `xxhash.h` :
99
+ Note that no change is required within the calling program as long as it includes `xxhash.h` :
117
100
  regular symbol name will be automatically translated by this header.
118
101
  */
119
102
  #ifdef XXH_NAMESPACE
@@ -132,6 +115,12 @@ regular symbol name will be automatically translated by this header.
132
115
  # define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update)
133
116
  # define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest)
134
117
  # define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest)
118
+ # define XXH32_copyState XXH_NAME2(XXH_NAMESPACE, XXH32_copyState)
119
+ # define XXH64_copyState XXH_NAME2(XXH_NAMESPACE, XXH64_copyState)
120
+ # define XXH32_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH32_canonicalFromHash)
121
+ # define XXH64_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH64_canonicalFromHash)
122
+ # define XXH32_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH32_hashFromCanonical)
123
+ # define XXH64_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH64_hashFromCanonical)
135
124
  #endif
136
125
 
137
126
 
@@ -140,7 +129,7 @@ regular symbol name will be automatically translated by this header.
140
129
  ***************************************/
141
130
  #define XXH_VERSION_MAJOR 0
142
131
  #define XXH_VERSION_MINOR 6
143
- #define XXH_VERSION_RELEASE 0
132
+ #define XXH_VERSION_RELEASE 2
144
133
  #define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE)
145
134
  XXH_PUBLIC_API unsigned XXH_versionNumber (void);
146
135
 
@@ -163,7 +152,7 @@ XXH32() :
163
152
  XXH64() :
164
153
  Calculate the 64-bits hash of sequence of length "len" stored at memory address "input".
165
154
  "seed" can be used to alter the result predictably.
166
- This function runs faster on 64-bits systems, but slower on 32-bits systems (see benchmark).
155
+ This function runs 2x faster on 64-bits systems, but slower on 32-bits systems (see benchmark).
167
156
  */
168
157
 
169
158
 
@@ -173,8 +162,7 @@ XXH64() :
173
162
  typedef struct XXH32_state_s XXH32_state_t; /* incomplete type */
174
163
  typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */
175
164
 
176
- /*! Dynamic allocation of states
177
- Compatible with dynamic libraries */
165
+ /*! State allocation, compatible with dynamic libraries */
178
166
 
179
167
  XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void);
180
168
  XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr);
@@ -193,31 +181,48 @@ XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, unsigned lon
193
181
  XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length);
194
182
  XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr);
195
183
 
196
- /*!
197
- These functions generate the xxHash of an input provided in multiple segments,
198
- as opposed to provided as a single block.
184
+ /*
185
+ These functions generate the xxHash of an input provided in multiple segments.
186
+ Note that, for small input, they are slower than single-call functions, due to state management.
187
+ For small input, prefer `XXH32()` and `XXH64()` .
199
188
 
200
- XXH state must first be allocated, using either static or dynamic method provided above.
189
+ XXH state must first be allocated, using XXH*_createState() .
201
190
 
202
- Start a new hash by initializing state with a seed, using XXHnn_reset().
191
+ Start a new hash by initializing state with a seed, using XXH*_reset().
203
192
 
204
- Then, feed the hash state by calling XXHnn_update() as many times as necessary.
205
- Obviously, input must be valid, hence allocated and read accessible.
193
+ Then, feed the hash state by calling XXH*_update() as many times as necessary.
194
+ Obviously, input must be allocated and read accessible.
206
195
  The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
207
196
 
208
- Finally, a hash value can be produced anytime, by using XXHnn_digest().
197
+ Finally, a hash value can be produced anytime, by using XXH*_digest().
209
198
  This function returns the nn-bits hash as an int or long long.
210
199
 
211
200
  It's still possible to continue inserting input into the hash state after a digest,
212
- and later on generate some new hashes, by calling again XXHnn_digest().
201
+ and generate some new hashes later on, by calling again XXH*_digest().
213
202
 
214
203
  When done, free XXH state space if it was allocated dynamically.
215
204
  */
216
205
 
217
206
 
207
+ /* **************************
208
+ * Utils
209
+ ****************************/
210
+ #if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* ! C99 */
211
+ # define restrict /* disable restrict */
212
+ #endif
213
+
214
+ XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* restrict dst_state, const XXH32_state_t* restrict src_state);
215
+ XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* restrict dst_state, const XXH64_state_t* restrict src_state);
216
+
217
+
218
218
  /* **************************
219
219
  * Canonical representation
220
220
  ****************************/
221
+ /* Default result type for XXH functions are primitive unsigned 32 and 64 bits.
222
+ * The canonical representation uses human-readable write convention, aka big-endian (large digits first).
223
+ * These functions allow transformation of hash result into and from its canonical format.
224
+ * This way, hash values can be written into a file / memory, and remain comparable on different systems and programs.
225
+ */
221
226
  typedef struct { unsigned char digest[4]; } XXH32_canonical_t;
222
227
  typedef struct { unsigned char digest[8]; } XXH64_canonical_t;
223
228
 
@@ -227,47 +232,54 @@ XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t
227
232
  XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src);
228
233
  XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src);
229
234
 
230
- /*! Default result type for XXH functions are primitive unsigned 32 and 64 bits.
231
- * The canonical representation uses human-readable write convention, aka big-endian (large digits first).
232
- * These functions allow transformation of hash result into and from its canonical format.
233
- * This way, hash values can be written into a file / memory, and remain comparable on different systems and programs.
234
- */
235
+ #endif /* XXHASH_H_5627135585666179 */
236
+
235
237
 
236
238
 
237
- #ifdef XXH_STATIC_LINKING_ONLY
239
+ /* ================================================================================================
240
+ This section contains definitions which are not guaranteed to remain stable.
241
+ They may change in future versions, becoming incompatible with a different version of the library.
242
+ They shall only be used with static linking.
243
+ Never use these definitions in association with dynamic linking !
244
+ =================================================================================================== */
245
+ #if defined(XXH_STATIC_LINKING_ONLY) && !defined(XXH_STATIC_H_3543687687345)
246
+ #define XXH_STATIC_H_3543687687345
238
247
 
239
- /* This part contains definition which shall only be used with static linking.
240
- The prototypes / types defined here are not guaranteed to remain stable.
241
- They could change in a future version, becoming incompatible with a different version of the library */
248
+ /* These definitions are only meant to allow allocation of XXH state
249
+ statically, on stack, or in a struct for example.
250
+ Do not use members directly. */
242
251
 
243
252
  struct XXH32_state_s {
244
- unsigned long long total_len;
245
- unsigned seed;
253
+ unsigned total_len_32;
254
+ unsigned large_len;
246
255
  unsigned v1;
247
256
  unsigned v2;
248
257
  unsigned v3;
249
258
  unsigned v4;
250
259
  unsigned mem32[4]; /* buffer defined as U32 for alignment */
251
260
  unsigned memsize;
261
+ unsigned reserved; /* never read nor write, will be removed in a future version */
252
262
  }; /* typedef'd to XXH32_state_t */
253
263
 
254
264
  struct XXH64_state_s {
255
265
  unsigned long long total_len;
256
- unsigned long long seed;
257
266
  unsigned long long v1;
258
267
  unsigned long long v2;
259
268
  unsigned long long v3;
260
269
  unsigned long long v4;
261
270
  unsigned long long mem64[4]; /* buffer defined as U64 for alignment */
262
271
  unsigned memsize;
272
+ unsigned reserved[2]; /* never read nor write, will be removed in a future version */
263
273
  }; /* typedef'd to XXH64_state_t */
264
274
 
265
275
 
266
- #endif
276
+ # ifdef XXH_PRIVATE_API
277
+ # include "xxhash.c" /* include xxhash functions as `static`, for inlining */
278
+ # endif
279
+
280
+ #endif /* XXH_STATIC_LINKING_ONLY && XXH_STATIC_H_3543687687345 */
267
281
 
268
282
 
269
283
  #if defined (__cplusplus)
270
284
  }
271
285
  #endif
272
-
273
- #endif /* XXHASH_H_5627135585666179 */
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
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
+
12
+
13
+ /*-*************************************
14
+ * Dependencies
15
+ ***************************************/
16
+ #include <stdlib.h> /* malloc, calloc, free */
17
+ #include <string.h> /* memset */
18
+ #include "error_private.h"
19
+ #include "zstd_internal.h"
20
+
21
+
22
+ /*-****************************************
23
+ * Version
24
+ ******************************************/
25
+ unsigned ZSTD_versionNumber(void) { return ZSTD_VERSION_NUMBER; }
26
+
27
+ const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; }
28
+
29
+
30
+ /*-****************************************
31
+ * ZSTD Error Management
32
+ ******************************************/
33
+ #undef ZSTD_isError /* defined within zstd_internal.h */
34
+ /*! ZSTD_isError() :
35
+ * tells if a return value is an error code
36
+ * symbol is required for external callers */
37
+ unsigned ZSTD_isError(size_t code) { return ERR_isError(code); }
38
+
39
+ /*! ZSTD_getErrorName() :
40
+ * provides error code string from function result (useful for debugging) */
41
+ const char* ZSTD_getErrorName(size_t code) { return ERR_getErrorName(code); }
42
+
43
+ /*! ZSTD_getError() :
44
+ * convert a `size_t` function result into a proper ZSTD_errorCode enum */
45
+ ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); }
46
+
47
+ /*! ZSTD_getErrorString() :
48
+ * provides error code string from enum */
49
+ const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString(code); }
50
+
51
+
52
+
53
+ /*=**************************************************************
54
+ * Custom allocator
55
+ ****************************************************************/
56
+ void* ZSTD_malloc(size_t size, ZSTD_customMem customMem)
57
+ {
58
+ if (customMem.customAlloc)
59
+ return customMem.customAlloc(customMem.opaque, size);
60
+ return malloc(size);
61
+ }
62
+
63
+ void* ZSTD_calloc(size_t size, ZSTD_customMem customMem)
64
+ {
65
+ if (customMem.customAlloc) {
66
+ /* calloc implemented as malloc+memset;
67
+ * not as efficient as calloc, but next best guess for custom malloc */
68
+ void* const ptr = customMem.customAlloc(customMem.opaque, size);
69
+ memset(ptr, 0, size);
70
+ return ptr;
71
+ }
72
+ return calloc(1, size);
73
+ }
74
+
75
+ void ZSTD_free(void* ptr, ZSTD_customMem customMem)
76
+ {
77
+ if (ptr!=NULL) {
78
+ if (customMem.customFree)
79
+ customMem.customFree(customMem.opaque, ptr);
80
+ else
81
+ free(ptr);
82
+ }
83
+ }
@@ -0,0 +1,94 @@
1
+ /*
2
+ * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
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_VISIBILITY
24
+ # if defined(__GNUC__) && (__GNUC__ >= 4)
25
+ # define ZSTDERRORLIB_VISIBILITY __attribute__ ((visibility ("default")))
26
+ # else
27
+ # define ZSTDERRORLIB_VISIBILITY
28
+ # endif
29
+ #endif
30
+ #if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1)
31
+ # define ZSTDERRORLIB_API __declspec(dllexport) ZSTDERRORLIB_VISIBILITY
32
+ #elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1)
33
+ # define ZSTDERRORLIB_API __declspec(dllimport) ZSTDERRORLIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/
34
+ #else
35
+ # define ZSTDERRORLIB_API ZSTDERRORLIB_VISIBILITY
36
+ #endif
37
+
38
+ /*-*********************************************
39
+ * Error codes list
40
+ *-*********************************************
41
+ * Error codes _values_ are pinned down since v1.3.1 only.
42
+ * Therefore, don't rely on values if you may link to any version < v1.3.1.
43
+ *
44
+ * Only values < 100 are considered stable.
45
+ *
46
+ * note 1 : this API shall be used with static linking only.
47
+ * dynamic linking is not yet officially supported.
48
+ * note 2 : Prefer relying on the enum than on its value whenever possible
49
+ * This is the only supported way to use the error list < v1.3.1
50
+ * note 3 : ZSTD_isError() is always correct, whatever the library version.
51
+ **********************************************/
52
+ typedef enum {
53
+ ZSTD_error_no_error = 0,
54
+ ZSTD_error_GENERIC = 1,
55
+ ZSTD_error_prefix_unknown = 10,
56
+ ZSTD_error_version_unsupported = 12,
57
+ ZSTD_error_frameParameter_unsupported = 14,
58
+ ZSTD_error_frameParameter_windowTooLarge = 16,
59
+ ZSTD_error_corruption_detected = 20,
60
+ ZSTD_error_checksum_wrong = 22,
61
+ ZSTD_error_dictionary_corrupted = 30,
62
+ ZSTD_error_dictionary_wrong = 32,
63
+ ZSTD_error_dictionaryCreation_failed = 34,
64
+ ZSTD_error_parameter_unsupported = 40,
65
+ ZSTD_error_parameter_outOfBound = 42,
66
+ ZSTD_error_tableLog_tooLarge = 44,
67
+ ZSTD_error_maxSymbolValue_tooLarge = 46,
68
+ ZSTD_error_maxSymbolValue_tooSmall = 48,
69
+ ZSTD_error_stage_wrong = 60,
70
+ ZSTD_error_init_missing = 62,
71
+ ZSTD_error_memory_allocation = 64,
72
+ ZSTD_error_workSpace_tooSmall= 66,
73
+ ZSTD_error_dstSize_tooSmall = 70,
74
+ ZSTD_error_srcSize_wrong = 72,
75
+ ZSTD_error_dstBuffer_null = 74,
76
+ /* following error codes are __NOT STABLE__, they can be removed or changed in future versions */
77
+ ZSTD_error_frameIndex_tooLarge = 100,
78
+ ZSTD_error_seekableIO = 102,
79
+ ZSTD_error_dstBuffer_wrong = 104,
80
+ ZSTD_error_maxCode = 120 /* never EVER use this value directly, it can change in future versions! Use ZSTD_isError() instead */
81
+ } ZSTD_ErrorCode;
82
+
83
+ /*! ZSTD_getErrorCode() :
84
+ convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
85
+ which can be used to compare with enum list published above */
86
+ ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
87
+ ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code); /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */
88
+
89
+
90
+ #if defined (__cplusplus)
91
+ }
92
+ #endif
93
+
94
+ #endif /* ZSTD_ERRORS_H_398273423 */