extzstd 0.0.3.CONCEPT-x86-mingw32 → 0.1-x86-mingw32
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 +4 -4
- data/HISTORY.ja +5 -0
- data/LICENSE +6 -6
- data/README.md +35 -22
- data/contrib/zstd/LICENSE +13 -9
- data/contrib/zstd/README.md +37 -44
- data/contrib/zstd/common/entropy_common.c +33 -39
- data/contrib/zstd/common/error_private.c +43 -0
- data/contrib/zstd/common/error_private.h +11 -60
- data/contrib/zstd/common/fse.h +11 -5
- data/contrib/zstd/common/fse_decompress.c +14 -16
- data/contrib/zstd/common/huf.h +1 -1
- data/contrib/zstd/common/mem.h +36 -43
- data/contrib/zstd/common/xxhash.c +31 -18
- data/contrib/zstd/common/xxhash.h +71 -35
- data/contrib/zstd/common/zbuff.h +29 -35
- data/contrib/zstd/common/zstd_common.c +24 -32
- data/contrib/zstd/common/zstd_errors.h +60 -0
- data/contrib/zstd/common/zstd_internal.h +109 -80
- data/contrib/zstd/compress/fse_compress.c +9 -6
- data/contrib/zstd/compress/huf_compress.c +30 -74
- data/contrib/zstd/compress/zbuff_compress.c +43 -51
- data/contrib/zstd/compress/zstd_compress.c +953 -763
- data/contrib/zstd/compress/zstd_opt.h +115 -261
- data/contrib/zstd/decompress/huf_decompress.c +29 -40
- data/contrib/zstd/decompress/zbuff_decompress.c +36 -78
- data/contrib/zstd/decompress/zstd_decompress.c +976 -496
- data/contrib/zstd/dictBuilder/divsufsort.h +5 -5
- data/contrib/zstd/dictBuilder/zdict.c +194 -229
- data/contrib/zstd/dictBuilder/zdict.h +66 -68
- data/contrib/zstd/legacy/zstd_legacy.h +168 -49
- data/contrib/zstd/legacy/zstd_v01.c +95 -178
- data/contrib/zstd/legacy/zstd_v01.h +12 -32
- data/contrib/zstd/legacy/zstd_v02.c +48 -274
- data/contrib/zstd/legacy/zstd_v02.h +12 -32
- data/contrib/zstd/legacy/zstd_v03.c +48 -274
- data/contrib/zstd/legacy/zstd_v03.h +12 -32
- data/contrib/zstd/legacy/zstd_v04.c +63 -320
- data/contrib/zstd/legacy/zstd_v04.h +13 -33
- data/contrib/zstd/legacy/zstd_v05.c +80 -345
- data/contrib/zstd/legacy/zstd_v05.h +9 -31
- data/contrib/zstd/legacy/zstd_v06.c +48 -458
- data/contrib/zstd/legacy/zstd_v06.h +41 -67
- data/contrib/zstd/legacy/zstd_v07.c +4544 -0
- data/contrib/zstd/legacy/zstd_v07.h +173 -0
- data/contrib/zstd/zstd.h +640 -0
- data/ext/extconf.rb +7 -3
- data/ext/extzstd.c +263 -106
- data/ext/extzstd.h +8 -6
- data/ext/extzstd_nogvls.h +0 -117
- data/ext/extzstd_stream.c +347 -0
- data/ext/zstd_common.c +8 -0
- data/ext/zstd_compress.c +6 -0
- data/ext/zstd_decompress.c +5 -0
- data/ext/zstd_dictbuilder.c +5 -0
- data/ext/zstd_legacy_v07.c +1 -0
- data/gemstub.rb +18 -16
- data/lib/2.1/extzstd.so +0 -0
- data/lib/2.2/extzstd.so +0 -0
- data/lib/2.3/extzstd.so +0 -0
- data/lib/extzstd/version.rb +1 -1
- data/lib/extzstd.rb +77 -43
- data/test/test_basic.rb +11 -6
- metadata +23 -11
- data/contrib/zstd/common/error_public.h +0 -77
- data/contrib/zstd/common/zstd.h +0 -475
- data/ext/extzstd_buffered.c +0 -265
- data/ext/zstd_amalgam.c +0 -18
- data/lib/2.0/extzstd.so +0 -0
@@ -1,89 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
met:
|
10
|
-
|
11
|
-
* Redistributions of source code must retain the above copyright
|
12
|
-
notice, this list of conditions and the following disclaimer.
|
13
|
-
* Redistributions in binary form must reproduce the above
|
14
|
-
copyright notice, this list of conditions and the following disclaimer
|
15
|
-
in the documentation and/or other materials provided with the
|
16
|
-
distribution.
|
17
|
-
|
18
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
19
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
20
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
21
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
22
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
23
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
24
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
25
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
26
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
27
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
28
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
-
|
30
|
-
You can contact the author at :
|
31
|
-
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
32
|
-
- Public forum : https://groups.google.com/forum/#!forum/lz4c
|
33
|
-
****************************************************************** */
|
34
|
-
#ifndef ERROR_H_MODULE
|
35
|
-
#define ERROR_H_MODULE
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
6
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
7
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
8
|
+
*/
|
36
9
|
|
37
|
-
#if defined (__cplusplus)
|
38
|
-
extern "C" {
|
39
|
-
#endif
|
40
10
|
|
41
11
|
#include <stddef.h> /* size_t, ptrdiff_t */
|
42
12
|
#include "zstd_v03.h"
|
43
|
-
|
44
|
-
/******************************************
|
45
|
-
* Compiler-specific
|
46
|
-
******************************************/
|
47
|
-
#if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
48
|
-
# define ERR_STATIC static inline
|
49
|
-
#elif defined(_MSC_VER)
|
50
|
-
# define ERR_STATIC static __inline
|
51
|
-
#elif defined(__GNUC__)
|
52
|
-
# define ERR_STATIC static __attribute__((unused))
|
53
|
-
#else
|
54
|
-
# define ERR_STATIC static /* this version may generate warnings for unused static functions; disable the relevant warning */
|
55
|
-
#endif
|
13
|
+
#include "error_private.h"
|
56
14
|
|
57
15
|
|
58
16
|
/******************************************
|
59
|
-
*
|
17
|
+
* Compiler-specific
|
60
18
|
******************************************/
|
61
|
-
#
|
62
|
-
|
63
|
-
#
|
64
|
-
|
65
|
-
#define ERROR_LIST(ITEM) \
|
66
|
-
ITEM(PREFIX(No_Error)) ITEM(PREFIX(GENERIC)) \
|
67
|
-
ITEM(PREFIX(memory_allocation)) \
|
68
|
-
ITEM(PREFIX(dstSize_tooSmall)) ITEM(PREFIX(srcSize_wrong)) \
|
69
|
-
ITEM(PREFIX(prefix_unknown)) ITEM(PREFIX(corruption_detected)) \
|
70
|
-
ITEM(PREFIX(tableLog_tooLarge)) ITEM(PREFIX(maxSymbolValue_tooLarge)) ITEM(PREFIX(maxSymbolValue_tooSmall)) \
|
71
|
-
ITEM(PREFIX(maxCode))
|
72
|
-
|
73
|
-
#define ERROR_GENERATE_ENUM(ENUM) ENUM,
|
74
|
-
typedef enum { ERROR_LIST(ERROR_GENERATE_ENUM) } ERR_codes; /* enum is exposed, to detect & handle specific errors; compare function result to -enum value */
|
75
|
-
|
76
|
-
#define ERROR_CONVERTTOSTRING(STRING) #STRING,
|
77
|
-
#define ERROR_GENERATE_STRING(EXPR) ERROR_CONVERTTOSTRING(EXPR)
|
78
|
-
|
79
|
-
ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); }
|
80
|
-
|
81
|
-
|
82
|
-
#if defined (__cplusplus)
|
83
|
-
}
|
19
|
+
#if defined(_MSC_VER) /* Visual Studio */
|
20
|
+
# include <stdlib.h> /* _byteswap_ulong */
|
21
|
+
# include <intrin.h> /* _byteswap_* */
|
84
22
|
#endif
|
85
23
|
|
86
|
-
#endif /* ERROR_H_MODULE */
|
87
24
|
|
88
25
|
|
89
26
|
/* ******************************************************************
|
@@ -190,7 +127,7 @@ extern "C" {
|
|
190
127
|
#ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
|
191
128
|
# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) )
|
192
129
|
# define MEM_FORCE_MEMORY_ACCESS 2
|
193
|
-
# elif defined(__INTEL_COMPILER) || \
|
130
|
+
# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
|
194
131
|
(defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
|
195
132
|
# define MEM_FORCE_MEMORY_ACCESS 1
|
196
133
|
# endif
|
@@ -214,8 +151,6 @@ MEM_STATIC U32 MEM_read32(const void* memPtr) { return *(const U32*) memPtr; }
|
|
214
151
|
MEM_STATIC U64 MEM_read64(const void* memPtr) { return *(const U64*) memPtr; }
|
215
152
|
|
216
153
|
MEM_STATIC void MEM_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
|
217
|
-
MEM_STATIC void MEM_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; }
|
218
|
-
MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
|
219
154
|
|
220
155
|
#elif defined(MEM_FORCE_MEMORY_ACCESS) && (MEM_FORCE_MEMORY_ACCESS==1)
|
221
156
|
|
@@ -228,8 +163,6 @@ MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32;
|
|
228
163
|
MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
|
229
164
|
|
230
165
|
MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
|
231
|
-
MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
|
232
|
-
MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign*)memPtr)->u64 = value; }
|
233
166
|
|
234
167
|
#else
|
235
168
|
|
@@ -256,15 +189,6 @@ MEM_STATIC void MEM_write16(void* memPtr, U16 value)
|
|
256
189
|
memcpy(memPtr, &value, sizeof(value));
|
257
190
|
}
|
258
191
|
|
259
|
-
MEM_STATIC void MEM_write32(void* memPtr, U32 value)
|
260
|
-
{
|
261
|
-
memcpy(memPtr, &value, sizeof(value));
|
262
|
-
}
|
263
|
-
|
264
|
-
MEM_STATIC void MEM_write64(void* memPtr, U64 value)
|
265
|
-
{
|
266
|
-
memcpy(memPtr, &value, sizeof(value));
|
267
|
-
}
|
268
192
|
|
269
193
|
#endif // MEM_FORCE_MEMORY_ACCESS
|
270
194
|
|
@@ -305,22 +229,6 @@ MEM_STATIC U32 MEM_readLE32(const void* memPtr)
|
|
305
229
|
}
|
306
230
|
}
|
307
231
|
|
308
|
-
MEM_STATIC void MEM_writeLE32(void* memPtr, U32 val32)
|
309
|
-
{
|
310
|
-
if (MEM_isLittleEndian())
|
311
|
-
{
|
312
|
-
MEM_write32(memPtr, val32);
|
313
|
-
}
|
314
|
-
else
|
315
|
-
{
|
316
|
-
BYTE* p = (BYTE*)memPtr;
|
317
|
-
p[0] = (BYTE)val32;
|
318
|
-
p[1] = (BYTE)(val32>>8);
|
319
|
-
p[2] = (BYTE)(val32>>16);
|
320
|
-
p[3] = (BYTE)(val32>>24);
|
321
|
-
}
|
322
|
-
}
|
323
|
-
|
324
232
|
MEM_STATIC U64 MEM_readLE64(const void* memPtr)
|
325
233
|
{
|
326
234
|
if (MEM_isLittleEndian())
|
@@ -333,25 +241,6 @@ MEM_STATIC U64 MEM_readLE64(const void* memPtr)
|
|
333
241
|
}
|
334
242
|
}
|
335
243
|
|
336
|
-
MEM_STATIC void MEM_writeLE64(void* memPtr, U64 val64)
|
337
|
-
{
|
338
|
-
if (MEM_isLittleEndian())
|
339
|
-
{
|
340
|
-
MEM_write64(memPtr, val64);
|
341
|
-
}
|
342
|
-
else
|
343
|
-
{
|
344
|
-
BYTE* p = (BYTE*)memPtr;
|
345
|
-
p[0] = (BYTE)val64;
|
346
|
-
p[1] = (BYTE)(val64>>8);
|
347
|
-
p[2] = (BYTE)(val64>>16);
|
348
|
-
p[3] = (BYTE)(val64>>24);
|
349
|
-
p[4] = (BYTE)(val64>>32);
|
350
|
-
p[5] = (BYTE)(val64>>40);
|
351
|
-
p[6] = (BYTE)(val64>>48);
|
352
|
-
p[7] = (BYTE)(val64>>56);
|
353
|
-
}
|
354
|
-
}
|
355
244
|
|
356
245
|
MEM_STATIC size_t MEM_readLEST(const void* memPtr)
|
357
246
|
{
|
@@ -361,13 +250,6 @@ MEM_STATIC size_t MEM_readLEST(const void* memPtr)
|
|
361
250
|
return (size_t)MEM_readLE64(memPtr);
|
362
251
|
}
|
363
252
|
|
364
|
-
MEM_STATIC void MEM_writeLEST(void* memPtr, size_t val)
|
365
|
-
{
|
366
|
-
if (MEM_32bits())
|
367
|
-
MEM_writeLE32(memPtr, (U32)val);
|
368
|
-
else
|
369
|
-
MEM_writeLE64(memPtr, (U64)val);
|
370
|
-
}
|
371
253
|
|
372
254
|
#if defined (__cplusplus)
|
373
255
|
}
|
@@ -1197,12 +1079,15 @@ typedef struct ZSTD_DCtx_s ZSTD_DCtx;
|
|
1197
1079
|
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
|
1198
1080
|
# pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
|
1199
1081
|
#else
|
1200
|
-
#
|
1201
|
-
#
|
1202
|
-
#
|
1082
|
+
# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
|
1083
|
+
# ifdef __GNUC__
|
1084
|
+
# define FORCE_INLINE static inline __attribute__((always_inline))
|
1085
|
+
# else
|
1086
|
+
# define FORCE_INLINE static inline
|
1087
|
+
# endif
|
1203
1088
|
# else
|
1204
|
-
# define FORCE_INLINE static
|
1205
|
-
# endif
|
1089
|
+
# define FORCE_INLINE static
|
1090
|
+
# endif /* __STDC_VERSION__ */
|
1206
1091
|
#endif
|
1207
1092
|
|
1208
1093
|
|
@@ -1663,25 +1548,13 @@ static size_t FSE_decompress(void* dst, size_t maxDstSize, const void* cSrc, siz
|
|
1663
1548
|
#if defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
1664
1549
|
/* inline is defined */
|
1665
1550
|
#elif defined(_MSC_VER)
|
1551
|
+
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
|
1666
1552
|
# define inline __inline
|
1667
1553
|
#else
|
1668
1554
|
# define inline /* disable inline */
|
1669
1555
|
#endif
|
1670
1556
|
|
1671
1557
|
|
1672
|
-
#ifdef _MSC_VER /* Visual Studio */
|
1673
|
-
# define FORCE_INLINE static __forceinline
|
1674
|
-
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
|
1675
|
-
#else
|
1676
|
-
# ifdef __GNUC__
|
1677
|
-
# define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
1678
|
-
# define FORCE_INLINE static inline __attribute__((always_inline))
|
1679
|
-
# else
|
1680
|
-
# define FORCE_INLINE static inline
|
1681
|
-
# endif
|
1682
|
-
#endif
|
1683
|
-
|
1684
|
-
|
1685
1558
|
/****************************************************************
|
1686
1559
|
* Includes
|
1687
1560
|
****************************************************************/
|
@@ -1731,10 +1604,12 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
1731
1604
|
U32 weightTotal;
|
1732
1605
|
U32 tableLog;
|
1733
1606
|
const BYTE* ip = (const BYTE*) src;
|
1734
|
-
size_t iSize
|
1607
|
+
size_t iSize;
|
1735
1608
|
size_t oSize;
|
1736
1609
|
U32 n;
|
1737
1610
|
|
1611
|
+
if (!srcSize) return ERROR(srcSize_wrong);
|
1612
|
+
iSize = ip[0];
|
1738
1613
|
//memset(huffWeight, 0, hwSize); /* is not necessary, even though some analyzer complain ... */
|
1739
1614
|
|
1740
1615
|
if (iSize >= 128) /* special header */
|
@@ -1776,6 +1651,7 @@ static size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
|
|
1776
1651
|
rankStats[huffWeight[n]]++;
|
1777
1652
|
weightTotal += (1 << huffWeight[n]) >> 1;
|
1778
1653
|
}
|
1654
|
+
if (weightTotal == 0) return ERROR(corruption_detected);
|
1779
1655
|
|
1780
1656
|
/* get last non-null symbol weight (implied, total must be 2^n) */
|
1781
1657
|
tableLog = BIT_highbit32(weightTotal) + 1;
|
@@ -2507,17 +2383,11 @@ static size_t HUF_decompress (void* dst, size_t dstSize, const void* cSrc, size_
|
|
2507
2383
|
#endif
|
2508
2384
|
|
2509
2385
|
#ifdef _MSC_VER /* Visual Studio */
|
2510
|
-
# define FORCE_INLINE static __forceinline
|
2511
2386
|
# include <intrin.h> /* For Visual 2005 */
|
2512
2387
|
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
|
2513
2388
|
# pragma warning(disable : 4324) /* disable: C4324: padded structure */
|
2514
2389
|
#else
|
2515
2390
|
# define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
2516
|
-
# ifdef __GNUC__
|
2517
|
-
# define FORCE_INLINE static inline __attribute__((always_inline))
|
2518
|
-
# else
|
2519
|
-
# define FORCE_INLINE static inline
|
2520
|
-
# endif
|
2521
2391
|
#endif
|
2522
2392
|
|
2523
2393
|
|
@@ -2624,98 +2494,6 @@ typedef struct {
|
|
2624
2494
|
static unsigned ZSTD_isError(size_t code) { return ERR_isError(code); }
|
2625
2495
|
|
2626
2496
|
|
2627
|
-
/* *************************************
|
2628
|
-
* Function body to include
|
2629
|
-
***************************************/
|
2630
|
-
static size_t ZSTD_read_ARCH(const void* p) { size_t r; memcpy(&r, p, sizeof(r)); return r; }
|
2631
|
-
|
2632
|
-
MEM_STATIC unsigned ZSTD_NbCommonBytes (register size_t val)
|
2633
|
-
{
|
2634
|
-
if (MEM_isLittleEndian())
|
2635
|
-
{
|
2636
|
-
if (MEM_64bits())
|
2637
|
-
{
|
2638
|
-
# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2639
|
-
unsigned long r = 0;
|
2640
|
-
_BitScanForward64( &r, (U64)val );
|
2641
|
-
return (int)(r>>3);
|
2642
|
-
# elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2643
|
-
return (__builtin_ctzll((U64)val) >> 3);
|
2644
|
-
# else
|
2645
|
-
static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 };
|
2646
|
-
return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
|
2647
|
-
# endif
|
2648
|
-
}
|
2649
|
-
else /* 32 bits */
|
2650
|
-
{
|
2651
|
-
# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2652
|
-
unsigned long r;
|
2653
|
-
_BitScanForward( &r, (U32)val );
|
2654
|
-
return (int)(r>>3);
|
2655
|
-
# elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2656
|
-
return (__builtin_ctz((U32)val) >> 3);
|
2657
|
-
# else
|
2658
|
-
static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };
|
2659
|
-
return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27];
|
2660
|
-
# endif
|
2661
|
-
}
|
2662
|
-
}
|
2663
|
-
else /* Big Endian CPU */
|
2664
|
-
{
|
2665
|
-
if (MEM_32bits())
|
2666
|
-
{
|
2667
|
-
# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2668
|
-
unsigned long r = 0;
|
2669
|
-
_BitScanReverse64( &r, val );
|
2670
|
-
return (unsigned)(r>>3);
|
2671
|
-
# elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2672
|
-
return (__builtin_clzll(val) >> 3);
|
2673
|
-
# else
|
2674
|
-
unsigned r;
|
2675
|
-
const unsigned n32 = sizeof(size_t)*4; /* calculate this way due to compiler complaining in 32-bits mode */
|
2676
|
-
if (!(val>>n32)) { r=4; } else { r=0; val>>=n32; }
|
2677
|
-
if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; }
|
2678
|
-
r += (!val);
|
2679
|
-
return r;
|
2680
|
-
# endif
|
2681
|
-
}
|
2682
|
-
else /* 32 bits */
|
2683
|
-
{
|
2684
|
-
# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2685
|
-
unsigned long r = 0;
|
2686
|
-
_BitScanReverse( &r, (unsigned long)val );
|
2687
|
-
return (unsigned)(r>>3);
|
2688
|
-
# elif defined(__GNUC__) && (__GNUC__ >= 3) && !defined(LZ4_FORCE_SW_BITCOUNT)
|
2689
|
-
return (__builtin_clz((U32)val) >> 3);
|
2690
|
-
# else
|
2691
|
-
unsigned r;
|
2692
|
-
if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; }
|
2693
|
-
r += (!val);
|
2694
|
-
return r;
|
2695
|
-
# endif
|
2696
|
-
}
|
2697
|
-
}
|
2698
|
-
}
|
2699
|
-
|
2700
|
-
|
2701
|
-
MEM_STATIC size_t ZSTD_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit)
|
2702
|
-
{
|
2703
|
-
const BYTE* const pStart = pIn;
|
2704
|
-
|
2705
|
-
while ((pIn<pInLimit-(sizeof(size_t)-1)))
|
2706
|
-
{
|
2707
|
-
size_t diff = ZSTD_read_ARCH(pMatch) ^ ZSTD_read_ARCH(pIn);
|
2708
|
-
if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; }
|
2709
|
-
pIn += ZSTD_NbCommonBytes(diff);
|
2710
|
-
return (size_t)(pIn - pStart);
|
2711
|
-
}
|
2712
|
-
|
2713
|
-
if (MEM_32bits()) if ((pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; }
|
2714
|
-
if ((pIn<(pInLimit-1)) && (MEM_read16(pMatch) == MEM_read16(pIn))) { pIn+=2; pMatch+=2; }
|
2715
|
-
if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
|
2716
|
-
return (size_t)(pIn - pStart);
|
2717
|
-
}
|
2718
|
-
|
2719
2497
|
|
2720
2498
|
/* *************************************************************
|
2721
2499
|
* Decompression section
|
@@ -2885,7 +2663,6 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
|
|
2885
2663
|
/* Build DTables */
|
2886
2664
|
switch(LLtype)
|
2887
2665
|
{
|
2888
|
-
U32 max;
|
2889
2666
|
case bt_rle :
|
2890
2667
|
LLlog = 0;
|
2891
2668
|
FSE_buildDTable_rle(DTableLL, *ip++); break;
|
@@ -2893,17 +2670,16 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
|
|
2893
2670
|
LLlog = LLbits;
|
2894
2671
|
FSE_buildDTable_raw(DTableLL, LLbits); break;
|
2895
2672
|
default :
|
2896
|
-
max = MaxLL;
|
2897
|
-
|
2898
|
-
|
2899
|
-
|
2900
|
-
|
2901
|
-
|
2902
|
-
}
|
2673
|
+
{ U32 max = MaxLL;
|
2674
|
+
headerSize = FSE_readNCount(norm, &max, &LLlog, ip, iend-ip);
|
2675
|
+
if (FSE_isError(headerSize)) return ERROR(GENERIC);
|
2676
|
+
if (LLlog > LLFSELog) return ERROR(corruption_detected);
|
2677
|
+
ip += headerSize;
|
2678
|
+
FSE_buildDTable(DTableLL, norm, max, LLlog);
|
2679
|
+
} }
|
2903
2680
|
|
2904
2681
|
switch(Offtype)
|
2905
2682
|
{
|
2906
|
-
U32 max;
|
2907
2683
|
case bt_rle :
|
2908
2684
|
Offlog = 0;
|
2909
2685
|
if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
|
@@ -2913,17 +2689,16 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
|
|
2913
2689
|
Offlog = Offbits;
|
2914
2690
|
FSE_buildDTable_raw(DTableOffb, Offbits); break;
|
2915
2691
|
default :
|
2916
|
-
max = MaxOff;
|
2917
|
-
|
2918
|
-
|
2919
|
-
|
2920
|
-
|
2921
|
-
|
2922
|
-
}
|
2692
|
+
{ U32 max = MaxOff;
|
2693
|
+
headerSize = FSE_readNCount(norm, &max, &Offlog, ip, iend-ip);
|
2694
|
+
if (FSE_isError(headerSize)) return ERROR(GENERIC);
|
2695
|
+
if (Offlog > OffFSELog) return ERROR(corruption_detected);
|
2696
|
+
ip += headerSize;
|
2697
|
+
FSE_buildDTable(DTableOffb, norm, max, Offlog);
|
2698
|
+
} }
|
2923
2699
|
|
2924
2700
|
switch(MLtype)
|
2925
2701
|
{
|
2926
|
-
U32 max;
|
2927
2702
|
case bt_rle :
|
2928
2703
|
MLlog = 0;
|
2929
2704
|
if (ip > iend-2) return ERROR(srcSize_wrong); /* min : "raw", hence no header, but at least xxLog bits */
|
@@ -2932,14 +2707,13 @@ static size_t ZSTD_decodeSeqHeaders(int* nbSeq, const BYTE** dumpsPtr, size_t* d
|
|
2932
2707
|
MLlog = MLbits;
|
2933
2708
|
FSE_buildDTable_raw(DTableML, MLbits); break;
|
2934
2709
|
default :
|
2935
|
-
max = MaxML;
|
2936
|
-
|
2937
|
-
|
2938
|
-
|
2939
|
-
|
2940
|
-
|
2941
|
-
|
2942
|
-
}
|
2710
|
+
{ U32 max = MaxML;
|
2711
|
+
headerSize = FSE_readNCount(norm, &max, &MLlog, ip, iend-ip);
|
2712
|
+
if (FSE_isError(headerSize)) return ERROR(GENERIC);
|
2713
|
+
if (MLlog > MLFSELog) return ERROR(corruption_detected);
|
2714
|
+
ip += headerSize;
|
2715
|
+
FSE_buildDTable(DTableML, norm, max, MLlog);
|
2716
|
+
} } }
|
2943
2717
|
|
2944
2718
|
return ip-istart;
|
2945
2719
|
}
|
@@ -1,36 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* This source code is licensed under the BSD-style license found in the
|
6
|
+
* LICENSE file in the root directory of this source tree. An additional grant
|
7
|
+
* of patent rights can be found in the PATENTS file in the same directory.
|
8
|
+
*/
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
met:
|
11
|
-
* Redistributions of source code must retain the above copyright
|
12
|
-
notice, this list of conditions and the following disclaimer.
|
13
|
-
* Redistributions in binary form must reproduce the above
|
14
|
-
copyright notice, this list of conditions and the following disclaimer
|
15
|
-
in the documentation and/or other materials provided with the
|
16
|
-
distribution.
|
17
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
18
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
19
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
20
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
21
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
24
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
25
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
26
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
27
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
|
29
|
-
You can contact the author at :
|
30
|
-
- zstd source repository : https://github.com/Cyan4973/zstd
|
31
|
-
- ztsd public forum : https://groups.google.com/forum/#!forum/lz4c
|
32
|
-
*/
|
33
|
-
#pragma once
|
10
|
+
#ifndef ZSTD_V03_H_298734209782
|
11
|
+
#define ZSTD_V03_H_298734209782
|
34
12
|
|
35
13
|
#if defined (__cplusplus)
|
36
14
|
extern "C" {
|
@@ -97,3 +75,5 @@ size_t ZSTDv03_decompressContinue(ZSTDv03_Dctx* dctx, void* dst, size_t maxDstSi
|
|
97
75
|
#if defined (__cplusplus)
|
98
76
|
}
|
99
77
|
#endif
|
78
|
+
|
79
|
+
#endif /* ZSTD_V03_H_298734209782 */
|