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
data/contrib/zstd/common/zbuff.h
CHANGED
@@ -1,33 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
-
|
28
|
-
You can contact the author at :
|
29
|
-
- zstd homepage : http://www.zstd.net/
|
30
|
-
*/
|
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
|
+
*/
|
9
|
+
|
10
|
+
/* ***************************************************************
|
11
|
+
* NOTES/WARNINGS
|
12
|
+
*****************************************************************/
|
13
|
+
/* The streaming API defined here will soon be deprecated by the
|
14
|
+
* new one in 'zstd.h'; consider migrating towards newer streaming
|
15
|
+
* API. See 'lib/README.md'.
|
16
|
+
*****************************************************************/
|
17
|
+
|
31
18
|
#ifndef ZSTD_BUFFERED_H_23987
|
32
19
|
#define ZSTD_BUFFERED_H_23987
|
33
20
|
|
@@ -56,6 +43,12 @@ extern "C" {
|
|
56
43
|
/* *************************************
|
57
44
|
* Streaming functions
|
58
45
|
***************************************/
|
46
|
+
/* This is the easier "buffered" streaming API,
|
47
|
+
* using an internal buffer to lift all restrictions on user-provided buffers
|
48
|
+
* which can be any size, any place, for both input and output.
|
49
|
+
* ZBUFF and ZSTD are 100% interoperable,
|
50
|
+
* frames created by one can be decoded by the other one */
|
51
|
+
|
59
52
|
typedef struct ZBUFF_CCtx_s ZBUFF_CCtx;
|
60
53
|
ZSTDLIB_API ZBUFF_CCtx* ZBUFF_createCCtx(void);
|
61
54
|
ZSTDLIB_API size_t ZBUFF_freeCCtx(ZBUFF_CCtx* cctx);
|
@@ -133,8 +126,9 @@ ZSTDLIB_API size_t ZBUFF_decompressContinue(ZBUFF_DCtx* dctx,
|
|
133
126
|
* The function will report how many bytes were read or written by modifying *srcSizePtr and *dstCapacityPtr.
|
134
127
|
* Note that it may not consume the entire input, in which case it's up to the caller to present remaining input again.
|
135
128
|
* The content of `dst` will be overwritten (up to *dstCapacityPtr) at each function call, so save its content if it matters, or change `dst`.
|
136
|
-
* @return :
|
137
|
-
*
|
129
|
+
* @return : 0 when a frame is completely decoded and fully flushed,
|
130
|
+
* 1 when there is still some data left within internal buffer to flush,
|
131
|
+
* >1 when more data is expected, with value being a suggested next input size (it's just a hint, which helps latency),
|
138
132
|
* or an error code, which can be tested using ZBUFF_isError().
|
139
133
|
*
|
140
134
|
* Hint : recommended buffer sizes (not compulsory) : ZBUFF_recommendedDInSize() and ZBUFF_recommendedDOutSize()
|
@@ -168,11 +162,11 @@ ZSTDLIB_API size_t ZBUFF_recommendedDOutSize(void);
|
|
168
162
|
* ==================================================================================== */
|
169
163
|
|
170
164
|
/*--- Dependency ---*/
|
171
|
-
#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_parameters */
|
165
|
+
#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_parameters, ZSTD_customMem */
|
172
166
|
#include "zstd.h"
|
173
167
|
|
174
168
|
|
175
|
-
/*---
|
169
|
+
/*--- Custom memory allocator ---*/
|
176
170
|
/*! ZBUFF_createCCtx_advanced() :
|
177
171
|
* Create a ZBUFF compression context using external alloc and free functions */
|
178
172
|
ZSTDLIB_API ZBUFF_CCtx* ZBUFF_createCCtx_advanced(ZSTD_customMem customMem);
|
@@ -182,7 +176,7 @@ ZSTDLIB_API ZBUFF_CCtx* ZBUFF_createCCtx_advanced(ZSTD_customMem customMem);
|
|
182
176
|
ZSTDLIB_API ZBUFF_DCtx* ZBUFF_createDCtx_advanced(ZSTD_customMem customMem);
|
183
177
|
|
184
178
|
|
185
|
-
/*--- Advanced Streaming
|
179
|
+
/*--- Advanced Streaming Initialization ---*/
|
186
180
|
ZSTDLIB_API size_t ZBUFF_compressInit_advanced(ZBUFF_CCtx* zbc,
|
187
181
|
const void* dict, size_t dictSize,
|
188
182
|
ZSTD_parameters params, unsigned long long pledgedSrcSize);
|
@@ -1,33 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
* Redistributions of source code must retain the above copyright
|
11
|
-
notice, this list of conditions and the following disclaimer.
|
12
|
-
* Redistributions in binary form must reproduce the above
|
13
|
-
copyright notice, this list of conditions and the following disclaimer
|
14
|
-
in the documentation and/or other materials provided with the
|
15
|
-
distribution.
|
16
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
-
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
-
|
28
|
-
You can contact the author at :
|
29
|
-
- zstd homepage : http://www.zstd.net/
|
30
|
-
*/
|
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
|
+
*/
|
9
|
+
|
31
10
|
|
32
11
|
|
33
12
|
/*-*************************************
|
@@ -75,17 +54,30 @@ const char* ZBUFF_getErrorName(size_t errorCode) { return ERR_getErrorName(error
|
|
75
54
|
|
76
55
|
|
77
56
|
|
57
|
+
/*=**************************************************************
|
58
|
+
* Custom allocator
|
59
|
+
****************************************************************/
|
60
|
+
/* default uses stdlib */
|
78
61
|
void* ZSTD_defaultAllocFunction(void* opaque, size_t size)
|
79
62
|
{
|
80
63
|
void* address = malloc(size);
|
81
64
|
(void)opaque;
|
82
|
-
/* printf("alloc %p, %d opaque=%p \n", address, (int)size, opaque); */
|
83
65
|
return address;
|
84
66
|
}
|
85
67
|
|
86
68
|
void ZSTD_defaultFreeFunction(void* opaque, void* address)
|
87
69
|
{
|
88
70
|
(void)opaque;
|
89
|
-
/* if (address) printf("free %p opaque=%p \n", address, opaque); */
|
90
71
|
free(address);
|
91
72
|
}
|
73
|
+
|
74
|
+
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem)
|
75
|
+
{
|
76
|
+
return customMem.customAlloc(customMem.opaque, size);
|
77
|
+
}
|
78
|
+
|
79
|
+
void ZSTD_free(void* ptr, ZSTD_customMem customMem)
|
80
|
+
{
|
81
|
+
if (ptr!=NULL)
|
82
|
+
customMem.customFree(customMem.opaque, ptr);
|
83
|
+
}
|
@@ -0,0 +1,60 @@
|
|
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
|
+
*/
|
9
|
+
|
10
|
+
#ifndef ZSTD_ERRORS_H_398273423
|
11
|
+
#define ZSTD_ERRORS_H_398273423
|
12
|
+
|
13
|
+
#if defined (__cplusplus)
|
14
|
+
extern "C" {
|
15
|
+
#endif
|
16
|
+
|
17
|
+
/*===== dependency =====*/
|
18
|
+
#include <stddef.h> /* size_t */
|
19
|
+
|
20
|
+
|
21
|
+
/*-****************************************
|
22
|
+
* error codes list
|
23
|
+
******************************************/
|
24
|
+
typedef enum {
|
25
|
+
ZSTD_error_no_error,
|
26
|
+
ZSTD_error_GENERIC,
|
27
|
+
ZSTD_error_prefix_unknown,
|
28
|
+
ZSTD_error_version_unsupported,
|
29
|
+
ZSTD_error_parameter_unknown,
|
30
|
+
ZSTD_error_frameParameter_unsupported,
|
31
|
+
ZSTD_error_frameParameter_unsupportedBy32bits,
|
32
|
+
ZSTD_error_frameParameter_windowTooLarge,
|
33
|
+
ZSTD_error_compressionParameter_unsupported,
|
34
|
+
ZSTD_error_init_missing,
|
35
|
+
ZSTD_error_memory_allocation,
|
36
|
+
ZSTD_error_stage_wrong,
|
37
|
+
ZSTD_error_dstSize_tooSmall,
|
38
|
+
ZSTD_error_srcSize_wrong,
|
39
|
+
ZSTD_error_corruption_detected,
|
40
|
+
ZSTD_error_checksum_wrong,
|
41
|
+
ZSTD_error_tableLog_tooLarge,
|
42
|
+
ZSTD_error_maxSymbolValue_tooLarge,
|
43
|
+
ZSTD_error_maxSymbolValue_tooSmall,
|
44
|
+
ZSTD_error_dictionary_corrupted,
|
45
|
+
ZSTD_error_dictionary_wrong,
|
46
|
+
ZSTD_error_maxCode
|
47
|
+
} ZSTD_ErrorCode;
|
48
|
+
|
49
|
+
/*! ZSTD_getErrorCode() :
|
50
|
+
convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
|
51
|
+
which can be used to compare directly with enum list published into "error_public.h" */
|
52
|
+
ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
|
53
|
+
const char* ZSTD_getErrorString(ZSTD_ErrorCode code);
|
54
|
+
|
55
|
+
|
56
|
+
#if defined (__cplusplus)
|
57
|
+
}
|
58
|
+
#endif
|
59
|
+
|
60
|
+
#endif /* ZSTD_ERRORS_H_398273423 */
|
@@ -1,37 +1,47 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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 homepage : https://www.zstd.net
|
31
|
-
*/
|
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
|
+
*/
|
9
|
+
|
32
10
|
#ifndef ZSTD_CCOMMON_H_MODULE
|
33
11
|
#define ZSTD_CCOMMON_H_MODULE
|
34
12
|
|
13
|
+
/*-*******************************************************
|
14
|
+
* Compiler specifics
|
15
|
+
*********************************************************/
|
16
|
+
#ifdef _MSC_VER /* Visual Studio */
|
17
|
+
# define FORCE_INLINE static __forceinline
|
18
|
+
# include <intrin.h> /* For Visual 2005 */
|
19
|
+
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
|
20
|
+
# pragma warning(disable : 4324) /* disable: C4324: padded structure */
|
21
|
+
# pragma warning(disable : 4100) /* disable: C4100: unreferenced formal parameter */
|
22
|
+
#else
|
23
|
+
# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
|
24
|
+
# ifdef __GNUC__
|
25
|
+
# define FORCE_INLINE static inline __attribute__((always_inline))
|
26
|
+
# else
|
27
|
+
# define FORCE_INLINE static inline
|
28
|
+
# endif
|
29
|
+
# else
|
30
|
+
# define FORCE_INLINE static
|
31
|
+
# endif /* __STDC_VERSION__ */
|
32
|
+
#endif
|
33
|
+
|
34
|
+
#ifdef _MSC_VER
|
35
|
+
# define FORCE_NOINLINE static __declspec(noinline)
|
36
|
+
#else
|
37
|
+
# ifdef __GNUC__
|
38
|
+
# define FORCE_NOINLINE static __attribute__((__noinline__))
|
39
|
+
# else
|
40
|
+
# define FORCE_NOINLINE static
|
41
|
+
# endif
|
42
|
+
#endif
|
43
|
+
|
44
|
+
|
35
45
|
/*-*************************************
|
36
46
|
* Dependencies
|
37
47
|
***************************************/
|
@@ -42,33 +52,24 @@
|
|
42
52
|
|
43
53
|
|
44
54
|
/*-*************************************
|
45
|
-
*
|
55
|
+
* shared macros
|
46
56
|
***************************************/
|
47
57
|
#define MIN(a,b) ((a)<(b) ? (a) : (b))
|
48
58
|
#define MAX(a,b) ((a)>(b) ? (a) : (b))
|
59
|
+
#define CHECK_F(f) { size_t const errcod = f; if (ERR_isError(errcod)) return errcod; } /* check and Forward error code */
|
60
|
+
#define CHECK_E(f, e) { size_t const errcod = f; if (ERR_isError(errcod)) return ERROR(e); } /* check and send Error code */
|
49
61
|
|
50
62
|
|
51
63
|
/*-*************************************
|
52
64
|
* Common constants
|
53
65
|
***************************************/
|
54
|
-
#define ZSTD_OPT_DEBUG 0 /* 3 = compression stats; 5 = check encoded sequences; 9 = full logs */
|
55
|
-
#include <stdio.h>
|
56
|
-
#if defined(ZSTD_OPT_DEBUG) && ZSTD_OPT_DEBUG>=9
|
57
|
-
#define ZSTD_LOG_PARSER(...) printf(__VA_ARGS__)
|
58
|
-
#define ZSTD_LOG_ENCODE(...) printf(__VA_ARGS__)
|
59
|
-
#define ZSTD_LOG_BLOCK(...) printf(__VA_ARGS__)
|
60
|
-
#else
|
61
|
-
#define ZSTD_LOG_PARSER(...)
|
62
|
-
#define ZSTD_LOG_ENCODE(...)
|
63
|
-
#define ZSTD_LOG_BLOCK(...)
|
64
|
-
#endif
|
65
|
-
|
66
66
|
#define ZSTD_OPT_NUM (1<<12)
|
67
|
-
#define ZSTD_DICT_MAGIC 0xEC30A437 /* v0.7 */
|
67
|
+
#define ZSTD_DICT_MAGIC 0xEC30A437 /* v0.7+ */
|
68
68
|
|
69
|
-
#define ZSTD_REP_NUM
|
70
|
-
#define
|
71
|
-
#define ZSTD_REP_MOVE
|
69
|
+
#define ZSTD_REP_NUM 3 /* number of repcodes */
|
70
|
+
#define ZSTD_REP_CHECK (ZSTD_REP_NUM) /* number of repcodes to check by the optimal parser */
|
71
|
+
#define ZSTD_REP_MOVE (ZSTD_REP_NUM-1)
|
72
|
+
#define ZSTD_REP_MOVE_OPT (ZSTD_REP_NUM)
|
72
73
|
static const U32 repStartValue[ZSTD_REP_NUM] = { 1, 4, 8 };
|
73
74
|
|
74
75
|
#define KB *(1 <<10)
|
@@ -88,13 +89,13 @@ static const size_t ZSTD_did_fieldSize[4] = { 0, 1, 2, 4 };
|
|
88
89
|
|
89
90
|
#define ZSTD_BLOCKHEADERSIZE 3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */
|
90
91
|
static const size_t ZSTD_blockHeaderSize = ZSTD_BLOCKHEADERSIZE;
|
91
|
-
typedef enum {
|
92
|
+
typedef enum { bt_raw, bt_rle, bt_compressed, bt_reserved } blockType_e;
|
92
93
|
|
93
94
|
#define MIN_SEQUENCES_SIZE 1 /* nbSeq==0 */
|
94
95
|
#define MIN_CBLOCK_SIZE (1 /*litCSize*/ + 1 /* RLE or RAW */ + MIN_SEQUENCES_SIZE /* nbSeq==0 */) /* for a non-null block */
|
95
96
|
|
96
97
|
#define HufLog 12
|
97
|
-
typedef enum {
|
98
|
+
typedef enum { set_basic, set_rle, set_compressed, set_repeat } symbolEncodingType_e;
|
98
99
|
|
99
100
|
#define LONGNBSEQ 0x7F00
|
100
101
|
|
@@ -111,18 +112,14 @@ typedef enum { lbt_huffman, lbt_repeat, lbt_raw, lbt_rle } litBlockType_t;
|
|
111
112
|
#define LLFSELog 9
|
112
113
|
#define OffFSELog 8
|
113
114
|
|
114
|
-
#define FSE_ENCODING_RAW 0
|
115
|
-
#define FSE_ENCODING_RLE 1
|
116
|
-
#define FSE_ENCODING_STATIC 2
|
117
|
-
#define FSE_ENCODING_DYNAMIC 3
|
118
|
-
|
119
115
|
static const U32 LL_bits[MaxLL+1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
120
116
|
1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9,10,11,12,
|
121
117
|
13,14,15,16 };
|
122
118
|
static const S16 LL_defaultNorm[MaxLL+1] = { 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
|
123
119
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1,
|
124
120
|
-1,-1,-1,-1 };
|
125
|
-
|
121
|
+
#define LL_DEFAULTNORMLOG 6 /* for static allocation */
|
122
|
+
static const U32 LL_defaultNormLog = LL_DEFAULTNORMLOG;
|
126
123
|
|
127
124
|
static const U32 ML_bits[MaxML+1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
128
125
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
@@ -132,11 +129,13 @@ static const S16 ML_defaultNorm[MaxML+1] = { 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1,
|
|
132
129
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
133
130
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,
|
134
131
|
-1,-1,-1,-1,-1 };
|
135
|
-
|
132
|
+
#define ML_DEFAULTNORMLOG 6 /* for static allocation */
|
133
|
+
static const U32 ML_defaultNormLog = ML_DEFAULTNORMLOG;
|
136
134
|
|
137
135
|
static const S16 OF_defaultNorm[MaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
|
138
136
|
1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1 };
|
139
|
-
|
137
|
+
#define OF_DEFAULTNORMLOG 5 /* for static allocation */
|
138
|
+
static const U32 OF_defaultNormLog = OF_DEFAULTNORMLOG;
|
140
139
|
|
141
140
|
|
142
141
|
/*-*******************************************
|
@@ -158,6 +157,16 @@ MEM_STATIC void ZSTD_wildcopy(void* dst, const void* src, size_t length)
|
|
158
157
|
while (op < oend);
|
159
158
|
}
|
160
159
|
|
160
|
+
MEM_STATIC void ZSTD_wildcopy_e(void* dst, const void* src, void* dstEnd) /* should be faster for decoding, but strangely, not verified on all platform */
|
161
|
+
{
|
162
|
+
const BYTE* ip = (const BYTE*)src;
|
163
|
+
BYTE* op = (BYTE*)dst;
|
164
|
+
BYTE* const oend = (BYTE*)dstEnd;
|
165
|
+
do
|
166
|
+
COPY8(op, ip)
|
167
|
+
while (op < oend);
|
168
|
+
}
|
169
|
+
|
161
170
|
|
162
171
|
/*-*******************************************
|
163
172
|
* Private interfaces
|
@@ -174,32 +183,25 @@ typedef struct {
|
|
174
183
|
U32 off;
|
175
184
|
U32 mlen;
|
176
185
|
U32 litlen;
|
177
|
-
U32 rep[
|
186
|
+
U32 rep[ZSTD_REP_NUM];
|
178
187
|
} ZSTD_optimal_t;
|
179
188
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
MEM_STATIC void ZSTD_statsUpdatePrices(ZSTD_stats_t* stats, size_t litLength, const BYTE* literals, size_t offset, size_t matchLength) { (void)stats; (void)litLength; (void)literals; (void)offset; (void)matchLength; }
|
188
|
-
#endif /* #if ZSTD_OPT_DEBUG == 3 */
|
189
|
+
|
190
|
+
typedef struct seqDef_s {
|
191
|
+
U32 offset;
|
192
|
+
U16 litLength;
|
193
|
+
U16 matchLength;
|
194
|
+
} seqDef;
|
195
|
+
|
189
196
|
|
190
197
|
typedef struct {
|
191
|
-
|
192
|
-
|
193
|
-
U32* offset;
|
194
|
-
BYTE* offCodeStart;
|
198
|
+
seqDef* sequencesStart;
|
199
|
+
seqDef* sequences;
|
195
200
|
BYTE* litStart;
|
196
201
|
BYTE* lit;
|
197
|
-
|
198
|
-
|
199
|
-
BYTE*
|
200
|
-
U16* matchLengthStart;
|
201
|
-
U16* matchLength;
|
202
|
-
BYTE* mlCodeStart;
|
202
|
+
BYTE* llCode;
|
203
|
+
BYTE* mlCode;
|
204
|
+
BYTE* ofCode;
|
203
205
|
U32 longLengthID; /* 0 == no longLength; 1 == Lit.longLength; 2 == Match.longLength; */
|
204
206
|
U32 longLengthPos;
|
205
207
|
/* opt */
|
@@ -223,16 +225,43 @@ typedef struct {
|
|
223
225
|
U32 cachedPrice;
|
224
226
|
U32 cachedLitLength;
|
225
227
|
const BYTE* cachedLiterals;
|
226
|
-
ZSTD_stats_t stats;
|
227
228
|
} seqStore_t;
|
228
229
|
|
229
230
|
const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
|
230
|
-
void ZSTD_seqToCodes(const seqStore_t* seqStorePtr
|
231
|
+
void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
|
231
232
|
int ZSTD_isSkipFrame(ZSTD_DCtx* dctx);
|
232
233
|
|
233
234
|
/* custom memory allocation functions */
|
234
235
|
void* ZSTD_defaultAllocFunction(void* opaque, size_t size);
|
235
236
|
void ZSTD_defaultFreeFunction(void* opaque, void* address);
|
236
237
|
static const ZSTD_customMem defaultCustomMem = { ZSTD_defaultAllocFunction, ZSTD_defaultFreeFunction, NULL };
|
238
|
+
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem);
|
239
|
+
void ZSTD_free(void* ptr, ZSTD_customMem customMem);
|
240
|
+
|
241
|
+
|
242
|
+
/*====== common function ======*/
|
243
|
+
|
244
|
+
MEM_STATIC U32 ZSTD_highbit32(U32 val)
|
245
|
+
{
|
246
|
+
# if defined(_MSC_VER) /* Visual */
|
247
|
+
unsigned long r=0;
|
248
|
+
_BitScanReverse(&r, val);
|
249
|
+
return (unsigned)r;
|
250
|
+
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
|
251
|
+
return 31 - __builtin_clz(val);
|
252
|
+
# else /* Software version */
|
253
|
+
static const int DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
|
254
|
+
U32 v = val;
|
255
|
+
int r;
|
256
|
+
v |= v >> 1;
|
257
|
+
v |= v >> 2;
|
258
|
+
v |= v >> 4;
|
259
|
+
v |= v >> 8;
|
260
|
+
v |= v >> 16;
|
261
|
+
r = DeBruijnClz[(U32)(v * 0x07C4ACDDU) >> 27];
|
262
|
+
return r;
|
263
|
+
# endif
|
264
|
+
}
|
265
|
+
|
237
266
|
|
238
267
|
#endif /* ZSTD_CCOMMON_H_MODULE */
|
@@ -41,12 +41,15 @@
|
|
41
41
|
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
|
42
42
|
# pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
|
43
43
|
#else
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
44
|
+
# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
|
45
|
+
# ifdef __GNUC__
|
46
|
+
# define FORCE_INLINE static inline __attribute__((always_inline))
|
47
|
+
# else
|
48
|
+
# define FORCE_INLINE static inline
|
49
|
+
# endif
|
47
50
|
# else
|
48
|
-
# define FORCE_INLINE static
|
49
|
-
# endif
|
51
|
+
# define FORCE_INLINE static
|
52
|
+
# endif /* __STDC_VERSION__ */
|
50
53
|
#endif
|
51
54
|
|
52
55
|
|
@@ -190,7 +193,7 @@ size_t FSE_NCountWriteBound(unsigned maxSymbolValue, unsigned tableLog)
|
|
190
193
|
return maxSymbolValue ? maxHeaderSize : FSE_NCOUNTBOUND; /* maxSymbolValue==0 ? use default */
|
191
194
|
}
|
192
195
|
|
193
|
-
static short FSE_abs(short a) { return a<0 ? -a : a; }
|
196
|
+
static short FSE_abs(short a) { return (short)(a<0 ? -a : a); }
|
194
197
|
|
195
198
|
static size_t FSE_writeNCount_generic (void* header, size_t headerBufferSize,
|
196
199
|
const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog,
|