zstd-ruby 1.2.0.0 → 1.3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/zstdruby/libzstd/Makefile +7 -5
  4. data/ext/zstdruby/libzstd/common/bitstream.h +23 -9
  5. data/ext/zstdruby/libzstd/common/error_private.c +4 -1
  6. data/ext/zstdruby/libzstd/common/huf.h +20 -0
  7. data/ext/zstdruby/libzstd/common/mem.h +0 -14
  8. data/ext/zstdruby/libzstd/common/pool.c +12 -0
  9. data/ext/zstdruby/libzstd/common/pool.h +5 -0
  10. data/ext/zstdruby/libzstd/common/threading.c +0 -1
  11. data/ext/zstdruby/libzstd/common/zstd_common.c +25 -18
  12. data/ext/zstdruby/libzstd/common/zstd_errors.h +15 -7
  13. data/ext/zstdruby/libzstd/common/zstd_internal.h +59 -9
  14. data/ext/zstdruby/libzstd/compress/huf_compress.c +7 -3
  15. data/ext/zstdruby/libzstd/compress/zstd_compress.c +1082 -487
  16. data/ext/zstdruby/libzstd/compress/zstd_opt.h +30 -15
  17. data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +362 -158
  18. data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +49 -13
  19. data/ext/zstdruby/libzstd/decompress/huf_decompress.c +150 -26
  20. data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +380 -258
  21. data/ext/zstdruby/libzstd/dictBuilder/cover.c +23 -37
  22. data/ext/zstdruby/libzstd/dictBuilder/zdict.c +30 -40
  23. data/ext/zstdruby/libzstd/dictBuilder/zdict.h +104 -95
  24. data/ext/zstdruby/libzstd/legacy/zstd_v04.c +11 -10
  25. data/ext/zstdruby/libzstd/legacy/zstd_v05.c +14 -19
  26. data/ext/zstdruby/libzstd/legacy/zstd_v06.c +13 -12
  27. data/ext/zstdruby/libzstd/legacy/zstd_v07.c +13 -14
  28. data/ext/zstdruby/libzstd/zstd.h +507 -166
  29. data/lib/zstd-ruby/version.rb +1 -1
  30. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 90c5ef25c36e660027688987e2c0d4c867aa33f6
4
- data.tar.gz: 54806b961cf688772ac05d856d3d72359caa3dfb
3
+ metadata.gz: f37d33e2de9a2f6792e4ed617a0015414c939e27
4
+ data.tar.gz: 284159f8db3f657c3152bf9a33d9982614815f43
5
5
  SHA512:
6
- metadata.gz: a7c6df76d82bda82633e3e93971e77c42b721e766568a0993589c83494c887aa70363908d50d10372ba7a298deb5fa78a0f58662becd5186db440a7e6e90422a
7
- data.tar.gz: 7cff0cfe30172d6c455b57e1785f0ddc2b612408cd5a83b98fabd7ff58399ae03e51c4dde244e36e736d7def3b16de788e33bd74450868826f0f6c293860d277
6
+ metadata.gz: a3369c26e404a541ca0e1f1c7ce8e23d801a74ee5aacc1e22ed3f77dea3573109100f824551ed4ea16659b2d6690d22f5f3665e2ff84ca48d514dd302999be13
7
+ data.tar.gz: '07911cc0475213a4898781a0b7a3ae29ed195e443a4fe2531c8affaf2307edeb6523252079c650573b769b7ce12209ffe08b5e605ca948829463d6604300b1e0'
data/README.md CHANGED
@@ -9,7 +9,7 @@ See https://github.com/facebook/zstd
9
9
  Fork from https://github.com/jarredholman/ruby-zstd.
10
10
 
11
11
  ## Zstd version
12
- v1.2.0 (https://github.com/facebook/zstd/tree/v1.2.0)
12
+ v1.3.0 (https://github.com/facebook/zstd/tree/v1.3.0)
13
13
 
14
14
  ## Installation
15
15
 
@@ -22,9 +22,11 @@ VERSION?= $(LIBVER)
22
22
 
23
23
  CPPFLAGS+= -I. -I./common -DXXH_NAMESPACE=ZSTD_
24
24
  CFLAGS ?= -O3
25
- DEBUGFLAGS = -g -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
26
- -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
27
- -Wstrict-prototypes -Wundef -Wpointer-arith -Wformat-security
25
+ DEBUGFLAGS = -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
26
+ -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
27
+ -Wstrict-prototypes -Wundef -Wpointer-arith -Wformat-security \
28
+ -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
29
+ -Wredundant-decls
28
30
  CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
29
31
  FLAGS = $(CPPFLAGS) $(CFLAGS)
30
32
 
@@ -71,7 +73,7 @@ libzstd.a: $(ZSTD_OBJ)
71
73
  @echo compiling static library
72
74
  @$(AR) $(ARFLAGS) $@ $^
73
75
 
74
- libzstd.a-mt: CPPFLAGS += -DZSTD_MULTHREAD
76
+ libzstd.a-mt: CPPFLAGS += -DZSTD_MULTITHREAD
75
77
  libzstd.a-mt: libzstd.a
76
78
 
77
79
  $(LIBZSTD): LDFLAGS += -shared -fPIC -fvisibility=hidden
@@ -147,7 +149,7 @@ install: libzstd.a libzstd libzstd.pc
147
149
  @$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/ $(DESTDIR)$(INCLUDEDIR)/
148
150
  @$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
149
151
  @echo Installing libraries
150
- @$(INSTALL_LIB) libzstd.a $(DESTDIR)$(LIBDIR)
152
+ @$(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR)
151
153
  @$(INSTALL_LIB) libzstd.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)
152
154
  @ln -sf libzstd.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
153
155
  @ln -sf libzstd.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
@@ -39,7 +39,6 @@
39
39
  extern "C" {
40
40
  #endif
41
41
 
42
-
43
42
  /*
44
43
  * This API consists of small unitary functions, which must be inlined for best performance.
45
44
  * Since link-time-optimization is not available for all compilers,
@@ -59,7 +58,9 @@ extern "C" {
59
58
  #if defined(BIT_DEBUG) && (BIT_DEBUG>=1)
60
59
  # include <assert.h>
61
60
  #else
62
- # define assert(condition) ((void)0)
61
+ # ifndef assert
62
+ # define assert(condition) ((void)0)
63
+ # endif
63
64
  #endif
64
65
 
65
66
 
@@ -74,6 +75,7 @@ extern "C" {
74
75
  #define STREAM_ACCUMULATOR_MIN_64 57
75
76
  #define STREAM_ACCUMULATOR_MIN ((U32)(MEM_32bits() ? STREAM_ACCUMULATOR_MIN_32 : STREAM_ACCUMULATOR_MIN_64))
76
77
 
78
+
77
79
  /*-******************************************
78
80
  * bitStream encoding API (write forward)
79
81
  ********************************************/
@@ -303,13 +305,25 @@ MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, si
303
305
  bitD->bitContainer = *(const BYTE*)(bitD->start);
304
306
  switch(srcSize)
305
307
  {
306
- case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
307
- case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
308
- case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
309
- case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
310
- case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
311
- case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8;
312
- default:;
308
+ case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
309
+ /* fall-through */
310
+
311
+ case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
312
+ /* fall-through */
313
+
314
+ case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
315
+ /* fall-through */
316
+
317
+ case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
318
+ /* fall-through */
319
+
320
+ case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
321
+ /* fall-through */
322
+
323
+ case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8;
324
+ /* fall-through */
325
+
326
+ default: break;
313
327
  }
314
328
  { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
315
329
  bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0;
@@ -24,7 +24,8 @@ const char* ERR_getErrorString(ERR_enum code)
24
24
  case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter";
25
25
  case PREFIX(frameParameter_unsupportedBy32bits): return "Frame parameter unsupported in 32-bits mode";
26
26
  case PREFIX(frameParameter_windowTooLarge): return "Frame requires too much memory for decoding";
27
- case PREFIX(compressionParameter_unsupported): return "Compression parameter is out of bound";
27
+ case PREFIX(compressionParameter_unsupported): return "Compression parameter is not supported";
28
+ case PREFIX(compressionParameter_outOfBound): return "Compression parameter is out of bound";
28
29
  case PREFIX(init_missing): return "Context should be init first";
29
30
  case PREFIX(memory_allocation): return "Allocation error : not enough memory";
30
31
  case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
@@ -38,6 +39,8 @@ const char* ERR_getErrorString(ERR_enum code)
38
39
  case PREFIX(dictionary_corrupted): return "Dictionary is corrupted";
39
40
  case PREFIX(dictionary_wrong): return "Dictionary mismatch";
40
41
  case PREFIX(dictionaryCreation_failed): return "Cannot create Dictionary from provided samples";
42
+ case PREFIX(frameIndex_tooLarge): return "Frame index is too large";
43
+ case PREFIX(seekableIO): return "An I/O error occurred when reading/seeking";
41
44
  case PREFIX(maxCode):
42
45
  default: return notErrorCode;
43
46
  }
@@ -111,6 +111,18 @@ HUF_PUBLIC_API size_t HUF_compress2 (void* dst, size_t dstCapacity, const void*
111
111
  #define HUF_WORKSPACE_SIZE_U32 (HUF_WORKSPACE_SIZE / sizeof(U32))
112
112
  HUF_PUBLIC_API size_t HUF_compress4X_wksp (void* dst, size_t dstCapacity, const void* src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
113
113
 
114
+ /**
115
+ * The minimum workspace size for the `workSpace` used in
116
+ * HUF_readDTableX2_wksp() and HUF_readDTableX4_wksp().
117
+ *
118
+ * The space used depends on HUF_TABLELOG_MAX, ranging from ~1500 bytes when
119
+ * HUF_TABLE_LOG_MAX=12 to ~1850 bytes when HUF_TABLE_LOG_MAX=15.
120
+ * Buffer overflow errors may potentially occur if code modifications result in
121
+ * a required workspace size greater than that specified in the following
122
+ * macro.
123
+ */
124
+ #define HUF_DECOMPRESS_WORKSPACE_SIZE (2 << 10)
125
+ #define HUF_DECOMPRESS_WORKSPACE_SIZE_U32 (HUF_DECOMPRESS_WORKSPACE_SIZE / sizeof(U32))
114
126
 
115
127
 
116
128
  /* ******************************************************************
@@ -170,8 +182,11 @@ size_t HUF_decompress4X4 (void* dst, size_t dstSize, const void* cSrc, size_t cS
170
182
 
171
183
  size_t HUF_decompress4X_DCtx (HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /**< decodes RLE and uncompressed */
172
184
  size_t HUF_decompress4X_hufOnly(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /**< considers RLE and uncompressed as errors */
185
+ size_t HUF_decompress4X_hufOnly_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize); /**< considers RLE and uncompressed as errors */
173
186
  size_t HUF_decompress4X2_DCtx(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /**< single-symbol decoder */
187
+ size_t HUF_decompress4X2_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize); /**< single-symbol decoder */
174
188
  size_t HUF_decompress4X4_DCtx(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /**< double-symbols decoder */
189
+ size_t HUF_decompress4X4_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize); /**< double-symbols decoder */
175
190
 
176
191
 
177
192
  /* ****************************************
@@ -243,7 +258,9 @@ HUF_decompress() does the following:
243
258
  U32 HUF_selectDecoder (size_t dstSize, size_t cSrcSize);
244
259
 
245
260
  size_t HUF_readDTableX2 (HUF_DTable* DTable, const void* src, size_t srcSize);
261
+ size_t HUF_readDTableX2_wksp (HUF_DTable* DTable, const void* src, size_t srcSize, void* workSpace, size_t wkspSize);
246
262
  size_t HUF_readDTableX4 (HUF_DTable* DTable, const void* src, size_t srcSize);
263
+ size_t HUF_readDTableX4_wksp (HUF_DTable* DTable, const void* src, size_t srcSize, void* workSpace, size_t wkspSize);
247
264
 
248
265
  size_t HUF_decompress4X_usingDTable(void* dst, size_t maxDstSize, const void* cSrc, size_t cSrcSize, const HUF_DTable* DTable);
249
266
  size_t HUF_decompress4X2_usingDTable(void* dst, size_t maxDstSize, const void* cSrc, size_t cSrcSize, const HUF_DTable* DTable);
@@ -266,8 +283,11 @@ size_t HUF_decompress1X2 (void* dst, size_t dstSize, const void* cSrc, size_t cS
266
283
  size_t HUF_decompress1X4 (void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /* double-symbol decoder */
267
284
 
268
285
  size_t HUF_decompress1X_DCtx (HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize);
286
+ size_t HUF_decompress1X_DCtx_wksp (HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize);
269
287
  size_t HUF_decompress1X2_DCtx(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /**< single-symbol decoder */
288
+ size_t HUF_decompress1X2_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize); /**< single-symbol decoder */
270
289
  size_t HUF_decompress1X4_DCtx(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize); /**< double-symbols decoder */
290
+ size_t HUF_decompress1X4_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize); /**< double-symbols decoder */
271
291
 
272
292
  size_t HUF_decompress1X_usingDTable(void* dst, size_t maxDstSize, const void* cSrc, size_t cSrcSize, const HUF_DTable* DTable); /**< automatic selection of sing or double symbol decoder, based on DTable */
273
293
  size_t HUF_decompress1X2_usingDTable(void* dst, size_t maxDstSize, const void* cSrc, size_t cSrcSize, const HUF_DTable* DTable);
@@ -352,20 +352,6 @@ MEM_STATIC void MEM_writeBEST(void* memPtr, size_t val)
352
352
  }
353
353
 
354
354
 
355
- /* function safe only for comparisons */
356
- MEM_STATIC U32 MEM_readMINMATCH(const void* memPtr, U32 length)
357
- {
358
- switch (length)
359
- {
360
- default :
361
- case 4 : return MEM_read32(memPtr);
362
- case 3 : if (MEM_isLittleEndian())
363
- return MEM_read32(memPtr)<<8;
364
- else
365
- return MEM_read32(memPtr)>>8;
366
- }
367
- }
368
-
369
355
  #if defined (__cplusplus)
370
356
  }
371
357
  #endif
@@ -146,6 +146,13 @@ void POOL_free(POOL_ctx *ctx) {
146
146
  free(ctx);
147
147
  }
148
148
 
149
+ size_t POOL_sizeof(POOL_ctx *ctx) {
150
+ if (ctx==NULL) return 0; /* supports sizeof NULL */
151
+ return sizeof(*ctx)
152
+ + ctx->queueSize * sizeof(POOL_job)
153
+ + ctx->numThreads * sizeof(pthread_t);
154
+ }
155
+
149
156
  void POOL_add(void *ctxVoid, POOL_function function, void *opaque) {
150
157
  POOL_ctx *ctx = (POOL_ctx *)ctxVoid;
151
158
  if (!ctx) { return; }
@@ -191,4 +198,9 @@ void POOL_add(void *ctx, POOL_function function, void *opaque) {
191
198
  function(opaque);
192
199
  }
193
200
 
201
+ size_t POOL_sizeof(POOL_ctx *ctx) {
202
+ if (ctx==NULL) return 0; /* supports sizeof NULL */
203
+ return sizeof(*ctx);
204
+ }
205
+
194
206
  #endif /* ZSTD_MULTITHREAD */
@@ -32,6 +32,11 @@ POOL_ctx *POOL_create(size_t numThreads, size_t queueSize);
32
32
  */
33
33
  void POOL_free(POOL_ctx *ctx);
34
34
 
35
+ /*! POOL_sizeof() :
36
+ return memory usage of pool returned by POOL_create().
37
+ */
38
+ size_t POOL_sizeof(POOL_ctx *ctx);
39
+
35
40
  /*! POOL_function :
36
41
  The function type that can be added to a thread pool.
37
42
  */
@@ -1,4 +1,3 @@
1
-
2
1
  /**
3
2
  * Copyright (c) 2016 Tino Reichardt
4
3
  * All rights reserved.
@@ -12,16 +12,19 @@
12
12
  /*-*************************************
13
13
  * Dependencies
14
14
  ***************************************/
15
- #include <stdlib.h> /* malloc */
15
+ #include <stdlib.h> /* malloc, calloc, free */
16
+ #include <string.h> /* memset */
16
17
  #include "error_private.h"
17
18
  #define ZSTD_STATIC_LINKING_ONLY
18
- #include "zstd.h" /* declaration of ZSTD_isError, ZSTD_getErrorName, ZSTD_getErrorCode, ZSTD_getErrorString, ZSTD_versionNumber */
19
+ #include "zstd.h"
19
20
 
20
21
 
21
22
  /*-****************************************
22
23
  * Version
23
24
  ******************************************/
24
- unsigned ZSTD_versionNumber (void) { return ZSTD_VERSION_NUMBER; }
25
+ unsigned ZSTD_versionNumber(void) { return ZSTD_VERSION_NUMBER; }
26
+
27
+ const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; }
25
28
 
26
29
 
27
30
  /*-****************************************
@@ -47,27 +50,31 @@ const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString
47
50
  /*=**************************************************************
48
51
  * Custom allocator
49
52
  ****************************************************************/
50
- /* default uses stdlib */
51
- void* ZSTD_defaultAllocFunction(void* opaque, size_t size)
52
- {
53
- void* address = malloc(size);
54
- (void)opaque;
55
- return address;
56
- }
57
-
58
- void ZSTD_defaultFreeFunction(void* opaque, void* address)
53
+ void* ZSTD_malloc(size_t size, ZSTD_customMem customMem)
59
54
  {
60
- (void)opaque;
61
- free(address);
55
+ if (customMem.customAlloc)
56
+ return customMem.customAlloc(customMem.opaque, size);
57
+ return malloc(size);
62
58
  }
63
59
 
64
- void* ZSTD_malloc(size_t size, ZSTD_customMem customMem)
60
+ void* ZSTD_calloc(size_t size, ZSTD_customMem customMem)
65
61
  {
66
- return customMem.customAlloc(customMem.opaque, size);
62
+ if (customMem.customAlloc) {
63
+ /* calloc implemented as malloc+memset;
64
+ * not as efficient as calloc, but next best guess for custom malloc */
65
+ void* const ptr = customMem.customAlloc(customMem.opaque, size);
66
+ memset(ptr, 0, size);
67
+ return ptr;
68
+ }
69
+ return calloc(1, size);
67
70
  }
68
71
 
69
72
  void ZSTD_free(void* ptr, ZSTD_customMem customMem)
70
73
  {
71
- if (ptr!=NULL)
72
- customMem.customFree(customMem.opaque, ptr);
74
+ if (ptr!=NULL) {
75
+ if (customMem.customFree)
76
+ customMem.customFree(customMem.opaque, ptr);
77
+ else
78
+ free(ptr);
79
+ }
73
80
  }
@@ -19,10 +19,12 @@ extern "C" {
19
19
 
20
20
 
21
21
  /* ===== ZSTDERRORLIB_API : control library symbols visibility ===== */
22
- #if defined(__GNUC__) && (__GNUC__ >= 4)
23
- # define ZSTDERRORLIB_VISIBILITY __attribute__ ((visibility ("default")))
24
- #else
25
- # define ZSTDERRORLIB_VISIBILITY
22
+ #ifndef ZSTDERRORLIB_VISIBILITY
23
+ # if defined(__GNUC__) && (__GNUC__ >= 4)
24
+ # define ZSTDERRORLIB_VISIBILITY __attribute__ ((visibility ("default")))
25
+ # else
26
+ # define ZSTDERRORLIB_VISIBILITY
27
+ # endif
26
28
  #endif
27
29
  #if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1)
28
30
  # define ZSTDERRORLIB_API __declspec(dllexport) ZSTDERRORLIB_VISIBILITY
@@ -33,8 +35,11 @@ extern "C" {
33
35
  #endif
34
36
 
35
37
  /*-****************************************
36
- * error codes list
37
- ******************************************/
38
+ * error codes list
39
+ * note : this API is still considered unstable
40
+ * it should not be used with a dynamic library
41
+ * only static linking is allowed
42
+ ******************************************/
38
43
  typedef enum {
39
44
  ZSTD_error_no_error,
40
45
  ZSTD_error_GENERIC,
@@ -45,6 +50,7 @@ typedef enum {
45
50
  ZSTD_error_frameParameter_unsupportedBy32bits,
46
51
  ZSTD_error_frameParameter_windowTooLarge,
47
52
  ZSTD_error_compressionParameter_unsupported,
53
+ ZSTD_error_compressionParameter_outOfBound,
48
54
  ZSTD_error_init_missing,
49
55
  ZSTD_error_memory_allocation,
50
56
  ZSTD_error_stage_wrong,
@@ -58,12 +64,14 @@ typedef enum {
58
64
  ZSTD_error_dictionary_corrupted,
59
65
  ZSTD_error_dictionary_wrong,
60
66
  ZSTD_error_dictionaryCreation_failed,
67
+ ZSTD_error_frameIndex_tooLarge,
68
+ ZSTD_error_seekableIO,
61
69
  ZSTD_error_maxCode
62
70
  } ZSTD_ErrorCode;
63
71
 
64
72
  /*! ZSTD_getErrorCode() :
65
73
  convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
66
- which can be used to compare directly with enum list published into "error_public.h" */
74
+ which can be used to compare with enum list published above */
67
75
  ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
68
76
  ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code);
69
77
 
@@ -18,6 +18,7 @@
18
18
  # include <intrin.h> /* For Visual 2005 */
19
19
  # pragma warning(disable : 4100) /* disable: C4100: unreferenced formal parameter */
20
20
  # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
21
+ # pragma warning(disable : 4204) /* disable: C4204: non-constant aggregate initializer */
21
22
  # pragma warning(disable : 4324) /* disable: C4324: padded structure */
22
23
  #else
23
24
  # if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
@@ -50,9 +51,42 @@
50
51
  #define ZSTD_STATIC_LINKING_ONLY
51
52
  #include "zstd.h"
52
53
  #ifndef XXH_STATIC_LINKING_ONLY
53
- # define XXH_STATIC_LINKING_ONLY /* XXH64_state_t */
54
+ # define XXH_STATIC_LINKING_ONLY /* XXH64_state_t */
55
+ #endif
56
+ #include "xxhash.h" /* XXH_reset, update, digest */
57
+
58
+
59
+ /*-*************************************
60
+ * Debug
61
+ ***************************************/
62
+ #if defined(ZSTD_DEBUG) && (ZSTD_DEBUG>=1)
63
+ # include <assert.h>
64
+ #else
65
+ # ifndef assert
66
+ # define assert(condition) ((void)0)
67
+ # endif
68
+ #endif
69
+
70
+ #define ZSTD_STATIC_ASSERT(c) { enum { ZSTD_static_assert = 1/(int)(!!(c)) }; }
71
+
72
+ #if defined(ZSTD_DEBUG) && (ZSTD_DEBUG>=2)
73
+ # include <stdio.h>
74
+ /* recommended values for ZSTD_DEBUG display levels :
75
+ * 1 : no display, enables assert() only
76
+ * 2 : reserved for currently active debugging path
77
+ * 3 : events once per object lifetime (CCtx, CDict)
78
+ * 4 : events once per frame
79
+ * 5 : events once per block
80
+ * 6 : events once per sequence (*very* verbose) */
81
+ # define DEBUGLOG(l, ...) { \
82
+ if (l<=ZSTD_DEBUG) { \
83
+ fprintf(stderr, __FILE__ ": "); \
84
+ fprintf(stderr, __VA_ARGS__); \
85
+ fprintf(stderr, " \n"); \
86
+ } }
87
+ #else
88
+ # define DEBUGLOG(l, ...) {} /* disabled */
54
89
  #endif
55
- #include "xxhash.h" /* XXH_reset, update, digest */
56
90
 
57
91
 
58
92
  /*-*************************************
@@ -70,7 +104,6 @@
70
104
  * Common constants
71
105
  ***************************************/
72
106
  #define ZSTD_OPT_NUM (1<<12)
73
- #define ZSTD_DICT_MAGIC 0xEC30A437 /* v0.7+ */
74
107
 
75
108
  #define ZSTD_REP_NUM 3 /* number of repcodes */
76
109
  #define ZSTD_REP_CHECK (ZSTD_REP_NUM) /* number of repcodes to check by the optimal parser */
@@ -235,15 +268,10 @@ typedef struct {
235
268
 
236
269
  const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
237
270
  void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
238
- int ZSTD_isSkipFrame(ZSTD_DCtx* dctx);
239
271
 
240
272
  /* custom memory allocation functions */
241
- void* ZSTD_defaultAllocFunction(void* opaque, size_t size);
242
- void ZSTD_defaultFreeFunction(void* opaque, void* address);
243
- #ifndef ZSTD_DLL_IMPORT
244
- static const ZSTD_customMem defaultCustomMem = { ZSTD_defaultAllocFunction, ZSTD_defaultFreeFunction, NULL };
245
- #endif
246
273
  void* ZSTD_malloc(size_t size, ZSTD_customMem customMem);
274
+ void* ZSTD_calloc(size_t size, ZSTD_customMem customMem);
247
275
  void ZSTD_free(void* ptr, ZSTD_customMem customMem);
248
276
 
249
277
 
@@ -281,4 +309,26 @@ MEM_STATIC U32 ZSTD_highbit32(U32 val)
281
309
  void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx);
282
310
 
283
311
 
312
+ /*! ZSTD_initCStream_internal() :
313
+ * Private use only. Init streaming operation.
314
+ * expects params to be valid.
315
+ * must receive dict, or cdict, or none, but not both.
316
+ * @return : 0, or an error code */
317
+ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
318
+ const void* dict, size_t dictSize,
319
+ const ZSTD_CDict* cdict,
320
+ ZSTD_parameters params, unsigned long long pledgedSrcSize);
321
+
322
+ /*! ZSTD_compressStream_generic() :
323
+ * Private use only. To be called from zstdmt_compress.c in single-thread mode. */
324
+ size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
325
+ ZSTD_outBuffer* output,
326
+ ZSTD_inBuffer* input,
327
+ ZSTD_EndDirective const flushMode);
328
+
329
+ /*! ZSTD_getParamsFromCDict() :
330
+ * as the name implies */
331
+ ZSTD_parameters ZSTD_getParamsFromCDict(const ZSTD_CDict* cdict);
332
+
333
+
284
334
  #endif /* ZSTD_CCOMMON_H_MODULE */