extzstd 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY.ja +5 -0
  3. data/README.md +5 -5
  4. data/contrib/zstd/CONTRIBUTING.md +42 -0
  5. data/contrib/zstd/LICENSE-examples +11 -0
  6. data/contrib/zstd/Makefile +315 -0
  7. data/contrib/zstd/NEWS +261 -0
  8. data/contrib/zstd/PATENTS +33 -0
  9. data/contrib/zstd/README.md +121 -41
  10. data/contrib/zstd/TESTING.md +44 -0
  11. data/contrib/zstd/appveyor.yml +178 -0
  12. data/contrib/zstd/circle.yml +75 -0
  13. data/contrib/zstd/lib/BUCK +186 -0
  14. data/contrib/zstd/lib/Makefile +163 -0
  15. data/contrib/zstd/lib/README.md +77 -0
  16. data/contrib/zstd/{common → lib/common}/bitstream.h +7 -4
  17. data/contrib/zstd/{common → lib/common}/entropy_common.c +19 -23
  18. data/contrib/zstd/{common → lib/common}/error_private.c +0 -0
  19. data/contrib/zstd/{common → lib/common}/error_private.h +0 -0
  20. data/contrib/zstd/{common → lib/common}/fse.h +94 -34
  21. data/contrib/zstd/{common → lib/common}/fse_decompress.c +18 -19
  22. data/contrib/zstd/{common → lib/common}/huf.h +52 -20
  23. data/contrib/zstd/{common → lib/common}/mem.h +17 -13
  24. data/contrib/zstd/lib/common/pool.c +194 -0
  25. data/contrib/zstd/lib/common/pool.h +56 -0
  26. data/contrib/zstd/lib/common/threading.c +80 -0
  27. data/contrib/zstd/lib/common/threading.h +104 -0
  28. data/contrib/zstd/{common → lib/common}/xxhash.c +3 -1
  29. data/contrib/zstd/{common → lib/common}/xxhash.h +11 -15
  30. data/contrib/zstd/{common → lib/common}/zstd_common.c +1 -11
  31. data/contrib/zstd/{common → lib/common}/zstd_errors.h +16 -2
  32. data/contrib/zstd/{common → lib/common}/zstd_internal.h +17 -1
  33. data/contrib/zstd/{compress → lib/compress}/fse_compress.c +138 -91
  34. data/contrib/zstd/{compress → lib/compress}/huf_compress.c +218 -67
  35. data/contrib/zstd/{compress → lib/compress}/zstd_compress.c +231 -108
  36. data/contrib/zstd/{compress → lib/compress}/zstd_opt.h +44 -25
  37. data/contrib/zstd/lib/compress/zstdmt_compress.c +739 -0
  38. data/contrib/zstd/lib/compress/zstdmt_compress.h +78 -0
  39. data/contrib/zstd/{decompress → lib/decompress}/huf_decompress.c +28 -23
  40. data/contrib/zstd/{decompress → lib/decompress}/zstd_decompress.c +814 -176
  41. data/contrib/zstd/{common → lib/deprecated}/zbuff.h +60 -39
  42. data/contrib/zstd/lib/deprecated/zbuff_common.c +26 -0
  43. data/contrib/zstd/lib/deprecated/zbuff_compress.c +145 -0
  44. data/contrib/zstd/lib/deprecated/zbuff_decompress.c +74 -0
  45. data/contrib/zstd/lib/dictBuilder/cover.c +1029 -0
  46. data/contrib/zstd/{dictBuilder → lib/dictBuilder}/divsufsort.c +0 -0
  47. data/contrib/zstd/{dictBuilder → lib/dictBuilder}/divsufsort.h +0 -0
  48. data/contrib/zstd/{dictBuilder → lib/dictBuilder}/zdict.c +68 -18
  49. data/contrib/zstd/lib/dictBuilder/zdict.h +201 -0
  50. data/contrib/zstd/{legacy → lib/legacy}/zstd_legacy.h +122 -7
  51. data/contrib/zstd/{legacy → lib/legacy}/zstd_v01.c +34 -3
  52. data/contrib/zstd/{legacy → lib/legacy}/zstd_v01.h +8 -0
  53. data/contrib/zstd/{legacy → lib/legacy}/zstd_v02.c +45 -12
  54. data/contrib/zstd/{legacy → lib/legacy}/zstd_v02.h +8 -0
  55. data/contrib/zstd/{legacy → lib/legacy}/zstd_v03.c +45 -12
  56. data/contrib/zstd/{legacy → lib/legacy}/zstd_v03.h +8 -0
  57. data/contrib/zstd/{legacy → lib/legacy}/zstd_v04.c +56 -33
  58. data/contrib/zstd/{legacy → lib/legacy}/zstd_v04.h +8 -0
  59. data/contrib/zstd/{legacy → lib/legacy}/zstd_v05.c +45 -18
  60. data/contrib/zstd/{legacy → lib/legacy}/zstd_v05.h +7 -0
  61. data/contrib/zstd/{legacy → lib/legacy}/zstd_v06.c +43 -16
  62. data/contrib/zstd/{legacy → lib/legacy}/zstd_v06.h +7 -0
  63. data/contrib/zstd/{legacy → lib/legacy}/zstd_v07.c +57 -23
  64. data/contrib/zstd/{legacy → lib/legacy}/zstd_v07.h +8 -0
  65. data/contrib/zstd/lib/libzstd.pc.in +14 -0
  66. data/contrib/zstd/{zstd.h → lib/zstd.h} +206 -71
  67. data/ext/depend +2 -0
  68. data/ext/extconf.rb +4 -4
  69. data/ext/extzstd.c +1 -1
  70. data/ext/zstd_common.c +5 -5
  71. data/ext/zstd_compress.c +3 -3
  72. data/ext/zstd_decompress.c +2 -2
  73. data/ext/zstd_dictbuilder.c +2 -2
  74. data/ext/zstd_legacy_v01.c +1 -1
  75. data/ext/zstd_legacy_v02.c +1 -1
  76. data/ext/zstd_legacy_v03.c +1 -1
  77. data/ext/zstd_legacy_v04.c +1 -1
  78. data/ext/zstd_legacy_v05.c +1 -1
  79. data/ext/zstd_legacy_v06.c +1 -1
  80. data/ext/zstd_legacy_v07.c +1 -1
  81. data/gemstub.rb +9 -5
  82. data/lib/extzstd/version.rb +1 -1
  83. metadata +73 -51
  84. data/contrib/zstd/compress/zbuff_compress.c +0 -319
  85. data/contrib/zstd/decompress/zbuff_decompress.c +0 -252
  86. data/contrib/zstd/dictBuilder/zdict.h +0 -111
@@ -1,252 +0,0 @@
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
-
12
- /* *************************************
13
- * Dependencies
14
- ***************************************/
15
- #include <stdlib.h>
16
- #include "error_private.h"
17
- #include "zstd_internal.h" /* MIN, ZSTD_blockHeaderSize, ZSTD_BLOCKSIZE_MAX */
18
- #define ZBUFF_STATIC_LINKING_ONLY
19
- #include "zbuff.h"
20
-
21
-
22
- typedef enum { ZBUFFds_init, ZBUFFds_loadHeader,
23
- ZBUFFds_read, ZBUFFds_load, ZBUFFds_flush } ZBUFF_dStage;
24
-
25
- /* *** Resource management *** */
26
- struct ZBUFF_DCtx_s {
27
- ZSTD_DCtx* zd;
28
- ZSTD_frameParams fParams;
29
- ZBUFF_dStage stage;
30
- char* inBuff;
31
- size_t inBuffSize;
32
- size_t inPos;
33
- char* outBuff;
34
- size_t outBuffSize;
35
- size_t outStart;
36
- size_t outEnd;
37
- size_t blockSize;
38
- BYTE headerBuffer[ZSTD_FRAMEHEADERSIZE_MAX];
39
- size_t lhSize;
40
- ZSTD_customMem customMem;
41
- }; /* typedef'd to ZBUFF_DCtx within "zbuff.h" */
42
-
43
-
44
- ZBUFF_DCtx* ZBUFF_createDCtx(void)
45
- {
46
- return ZBUFF_createDCtx_advanced(defaultCustomMem);
47
- }
48
-
49
- ZBUFF_DCtx* ZBUFF_createDCtx_advanced(ZSTD_customMem customMem)
50
- {
51
- ZBUFF_DCtx* zbd;
52
-
53
- if (!customMem.customAlloc && !customMem.customFree)
54
- customMem = defaultCustomMem;
55
-
56
- if (!customMem.customAlloc || !customMem.customFree)
57
- return NULL;
58
-
59
- zbd = (ZBUFF_DCtx*)customMem.customAlloc(customMem.opaque, sizeof(ZBUFF_DCtx));
60
- if (zbd==NULL) return NULL;
61
- memset(zbd, 0, sizeof(ZBUFF_DCtx));
62
- memcpy(&zbd->customMem, &customMem, sizeof(ZSTD_customMem));
63
- zbd->zd = ZSTD_createDCtx_advanced(customMem);
64
- if (zbd->zd == NULL) { ZBUFF_freeDCtx(zbd); return NULL; }
65
- zbd->stage = ZBUFFds_init;
66
- return zbd;
67
- }
68
-
69
- size_t ZBUFF_freeDCtx(ZBUFF_DCtx* zbd)
70
- {
71
- if (zbd==NULL) return 0; /* support free on null */
72
- ZSTD_freeDCtx(zbd->zd);
73
- if (zbd->inBuff) zbd->customMem.customFree(zbd->customMem.opaque, zbd->inBuff);
74
- if (zbd->outBuff) zbd->customMem.customFree(zbd->customMem.opaque, zbd->outBuff);
75
- zbd->customMem.customFree(zbd->customMem.opaque, zbd);
76
- return 0;
77
- }
78
-
79
-
80
- /* *** Initialization *** */
81
-
82
- size_t ZBUFF_decompressInitDictionary(ZBUFF_DCtx* zbd, const void* dict, size_t dictSize)
83
- {
84
- zbd->stage = ZBUFFds_loadHeader;
85
- zbd->lhSize = zbd->inPos = zbd->outStart = zbd->outEnd = 0;
86
- return ZSTD_decompressBegin_usingDict(zbd->zd, dict, dictSize);
87
- }
88
-
89
- size_t ZBUFF_decompressInit(ZBUFF_DCtx* zbd)
90
- {
91
- return ZBUFF_decompressInitDictionary(zbd, NULL, 0);
92
- }
93
-
94
-
95
- /* internal util function */
96
- MEM_STATIC size_t ZBUFF_limitCopy(void* dst, size_t dstCapacity, const void* src, size_t srcSize)
97
- {
98
- size_t const length = MIN(dstCapacity, srcSize);
99
- memcpy(dst, src, length);
100
- return length;
101
- }
102
-
103
-
104
- /* *** Decompression *** */
105
-
106
- size_t ZBUFF_decompressContinue(ZBUFF_DCtx* zbd,
107
- void* dst, size_t* dstCapacityPtr,
108
- const void* src, size_t* srcSizePtr)
109
- {
110
- const char* const istart = (const char*)src;
111
- const char* const iend = istart + *srcSizePtr;
112
- const char* ip = istart;
113
- char* const ostart = (char*)dst;
114
- char* const oend = ostart + *dstCapacityPtr;
115
- char* op = ostart;
116
- U32 someMoreWork = 1;
117
-
118
- while (someMoreWork) {
119
- switch(zbd->stage)
120
- {
121
- case ZBUFFds_init :
122
- return ERROR(init_missing);
123
-
124
- case ZBUFFds_loadHeader :
125
- { size_t const hSize = ZSTD_getFrameParams(&(zbd->fParams), zbd->headerBuffer, zbd->lhSize);
126
- if (ZSTD_isError(hSize)) return hSize;
127
- if (hSize != 0) { /* need more input */
128
- size_t const toLoad = hSize - zbd->lhSize; /* if hSize!=0, hSize > zbd->lhSize */
129
- if (toLoad > (size_t)(iend-ip)) { /* not enough input to load full header */
130
- memcpy(zbd->headerBuffer + zbd->lhSize, ip, iend-ip);
131
- zbd->lhSize += iend-ip;
132
- *dstCapacityPtr = 0;
133
- return (hSize - zbd->lhSize) + ZSTD_blockHeaderSize; /* remaining header bytes + next block header */
134
- }
135
- memcpy(zbd->headerBuffer + zbd->lhSize, ip, toLoad); zbd->lhSize = hSize; ip += toLoad;
136
- break;
137
- } }
138
-
139
- /* Consume header */
140
- { size_t const h1Size = ZSTD_nextSrcSizeToDecompress(zbd->zd); /* == ZSTD_frameHeaderSize_min */
141
- size_t const h1Result = ZSTD_decompressContinue(zbd->zd, NULL, 0, zbd->headerBuffer, h1Size);
142
- if (ZSTD_isError(h1Result)) return h1Result; /* should not happen : already checked */
143
- if (h1Size < zbd->lhSize) { /* long header */
144
- size_t const h2Size = ZSTD_nextSrcSizeToDecompress(zbd->zd);
145
- size_t const h2Result = ZSTD_decompressContinue(zbd->zd, NULL, 0, zbd->headerBuffer+h1Size, h2Size);
146
- if (ZSTD_isError(h2Result)) return h2Result;
147
- } }
148
-
149
- zbd->fParams.windowSize = MAX(zbd->fParams.windowSize, 1U << ZSTD_WINDOWLOG_ABSOLUTEMIN);
150
-
151
- /* Frame header instruct buffer sizes */
152
- { size_t const blockSize = MIN(zbd->fParams.windowSize, ZSTD_BLOCKSIZE_ABSOLUTEMAX);
153
- size_t const neededOutSize = zbd->fParams.windowSize + blockSize;
154
- zbd->blockSize = blockSize;
155
- if (zbd->inBuffSize < blockSize) {
156
- zbd->customMem.customFree(zbd->customMem.opaque, zbd->inBuff);
157
- zbd->inBuffSize = blockSize;
158
- zbd->inBuff = (char*)zbd->customMem.customAlloc(zbd->customMem.opaque, blockSize);
159
- if (zbd->inBuff == NULL) return ERROR(memory_allocation);
160
- }
161
- if (zbd->outBuffSize < neededOutSize) {
162
- zbd->customMem.customFree(zbd->customMem.opaque, zbd->outBuff);
163
- zbd->outBuffSize = neededOutSize;
164
- zbd->outBuff = (char*)zbd->customMem.customAlloc(zbd->customMem.opaque, neededOutSize);
165
- if (zbd->outBuff == NULL) return ERROR(memory_allocation);
166
- } }
167
- zbd->stage = ZBUFFds_read;
168
- /* pass-through */
169
-
170
- case ZBUFFds_read:
171
- { size_t const neededInSize = ZSTD_nextSrcSizeToDecompress(zbd->zd);
172
- if (neededInSize==0) { /* end of frame */
173
- zbd->stage = ZBUFFds_init;
174
- someMoreWork = 0;
175
- break;
176
- }
177
- if ((size_t)(iend-ip) >= neededInSize) { /* decode directly from src */
178
- const int isSkipFrame = ZSTD_isSkipFrame(zbd->zd);
179
- size_t const decodedSize = ZSTD_decompressContinue(zbd->zd,
180
- zbd->outBuff + zbd->outStart, (isSkipFrame ? 0 : zbd->outBuffSize - zbd->outStart),
181
- ip, neededInSize);
182
- if (ZSTD_isError(decodedSize)) return decodedSize;
183
- ip += neededInSize;
184
- if (!decodedSize && !isSkipFrame) break; /* this was just a header */
185
- zbd->outEnd = zbd->outStart + decodedSize;
186
- zbd->stage = ZBUFFds_flush;
187
- break;
188
- }
189
- if (ip==iend) { someMoreWork = 0; break; } /* no more input */
190
- zbd->stage = ZBUFFds_load;
191
- /* pass-through */
192
- }
193
-
194
- case ZBUFFds_load:
195
- { size_t const neededInSize = ZSTD_nextSrcSizeToDecompress(zbd->zd);
196
- size_t const toLoad = neededInSize - zbd->inPos; /* should always be <= remaining space within inBuff */
197
- size_t loadedSize;
198
- if (toLoad > zbd->inBuffSize - zbd->inPos) return ERROR(corruption_detected); /* should never happen */
199
- loadedSize = ZBUFF_limitCopy(zbd->inBuff + zbd->inPos, toLoad, ip, iend-ip);
200
- ip += loadedSize;
201
- zbd->inPos += loadedSize;
202
- if (loadedSize < toLoad) { someMoreWork = 0; break; } /* not enough input, wait for more */
203
-
204
- /* decode loaded input */
205
- { const int isSkipFrame = ZSTD_isSkipFrame(zbd->zd);
206
- size_t const decodedSize = ZSTD_decompressContinue(zbd->zd,
207
- zbd->outBuff + zbd->outStart, zbd->outBuffSize - zbd->outStart,
208
- zbd->inBuff, neededInSize);
209
- if (ZSTD_isError(decodedSize)) return decodedSize;
210
- zbd->inPos = 0; /* input is consumed */
211
- if (!decodedSize && !isSkipFrame) { zbd->stage = ZBUFFds_read; break; } /* this was just a header */
212
- zbd->outEnd = zbd->outStart + decodedSize;
213
- zbd->stage = ZBUFFds_flush;
214
- /* pass-through */
215
- } }
216
-
217
- case ZBUFFds_flush:
218
- { size_t const toFlushSize = zbd->outEnd - zbd->outStart;
219
- size_t const flushedSize = ZBUFF_limitCopy(op, oend-op, zbd->outBuff + zbd->outStart, toFlushSize);
220
- op += flushedSize;
221
- zbd->outStart += flushedSize;
222
- if (flushedSize == toFlushSize) { /* flush completed */
223
- zbd->stage = ZBUFFds_read;
224
- if (zbd->outStart + zbd->blockSize > zbd->outBuffSize)
225
- zbd->outStart = zbd->outEnd = 0;
226
- break;
227
- }
228
- /* cannot flush everything */
229
- someMoreWork = 0;
230
- break;
231
- }
232
- default: return ERROR(GENERIC); /* impossible */
233
- } }
234
-
235
- /* result */
236
- *srcSizePtr = ip-istart;
237
- *dstCapacityPtr = op-ostart;
238
- { size_t nextSrcSizeHint = ZSTD_nextSrcSizeToDecompress(zbd->zd);
239
- if (!nextSrcSizeHint) return (zbd->outEnd != zbd->outStart); /* return 0 only if fully flushed too */
240
- nextSrcSizeHint += ZSTD_blockHeaderSize * (ZSTD_nextInputType(zbd->zd) == ZSTDnit_block);
241
- if (zbd->inPos > nextSrcSizeHint) return ERROR(GENERIC); /* should never happen */
242
- nextSrcSizeHint -= zbd->inPos; /* already loaded*/
243
- return nextSrcSizeHint;
244
- }
245
- }
246
-
247
-
248
- /* *************************************
249
- * Tool functions
250
- ***************************************/
251
- size_t ZBUFF_recommendedDInSize(void) { return ZSTD_BLOCKSIZE_ABSOLUTEMAX + ZSTD_blockHeaderSize /* block header size*/ ; }
252
- size_t ZBUFF_recommendedDOutSize(void) { return ZSTD_BLOCKSIZE_ABSOLUTEMAX; }
@@ -1,111 +0,0 @@
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 DICTBUILDER_H_001
11
- #define DICTBUILDER_H_001
12
-
13
- #if defined (__cplusplus)
14
- extern "C" {
15
- #endif
16
-
17
-
18
- /*====== Dependencies ======*/
19
- #include <stddef.h> /* size_t */
20
-
21
-
22
- /*====== Export for Windows ======*/
23
- /*!
24
- * ZSTD_DLL_EXPORT :
25
- * Enable exporting of functions when building a Windows DLL
26
- */
27
- #if defined(_WIN32) && defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1)
28
- # define ZDICTLIB_API __declspec(dllexport)
29
- #else
30
- # define ZDICTLIB_API
31
- #endif
32
-
33
-
34
- /*! ZDICT_trainFromBuffer() :
35
- Train a dictionary from an array of samples.
36
- Samples must be stored concatenated in a single flat buffer `samplesBuffer`,
37
- supplied with an array of sizes `samplesSizes`, providing the size of each sample, in order.
38
- The resulting dictionary will be saved into `dictBuffer`.
39
- @return : size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`)
40
- or an error code, which can be tested with ZDICT_isError().
41
- Tips : In general, a reasonable dictionary has a size of ~ 100 KB.
42
- It's obviously possible to target smaller or larger ones, just by specifying different `dictBufferCapacity`.
43
- In general, it's recommended to provide a few thousands samples, but this can vary a lot.
44
- It's recommended that total size of all samples be about ~x100 times the target size of dictionary.
45
- */
46
- ZDICTLIB_API size_t ZDICT_trainFromBuffer(void* dictBuffer, size_t dictBufferCapacity,
47
- const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples);
48
-
49
-
50
- /*====== Helper functions ======*/
51
- ZDICTLIB_API unsigned ZDICT_getDictID(const void* dictBuffer, size_t dictSize); /**< extracts dictID; @return zero if error (not a valid dictionary) */
52
- ZDICTLIB_API unsigned ZDICT_isError(size_t errorCode);
53
- ZDICTLIB_API const char* ZDICT_getErrorName(size_t errorCode);
54
-
55
-
56
-
57
- #ifdef ZDICT_STATIC_LINKING_ONLY
58
-
59
- /* ====================================================================================
60
- * The definitions in this section are considered experimental.
61
- * They should never be used with a dynamic library, as they may change in the future.
62
- * They are provided for advanced usages.
63
- * Use them only in association with static linking.
64
- * ==================================================================================== */
65
-
66
- typedef struct {
67
- unsigned selectivityLevel; /* 0 means default; larger => select more => larger dictionary */
68
- int compressionLevel; /* 0 means default; target a specific zstd compression level */
69
- unsigned notificationLevel; /* Write to stderr; 0 = none (default); 1 = errors; 2 = progression; 3 = details; 4 = debug; */
70
- unsigned dictID; /* 0 means auto mode (32-bits random value); other : force dictID value */
71
- unsigned reserved[2]; /* reserved space for future parameters */
72
- } ZDICT_params_t;
73
-
74
-
75
- /*! ZDICT_trainFromBuffer_advanced() :
76
- Same as ZDICT_trainFromBuffer() with control over more parameters.
77
- `parameters` is optional and can be provided with values set to 0 to mean "default".
78
- @return : size of dictionary stored into `dictBuffer` (<= `dictBufferSize`),
79
- or an error code, which can be tested by ZDICT_isError().
80
- note : ZDICT_trainFromBuffer_advanced() will send notifications into stderr if instructed to, using notificationLevel>0.
81
- */
82
- size_t ZDICT_trainFromBuffer_advanced(void* dictBuffer, size_t dictBufferCapacity,
83
- const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples,
84
- ZDICT_params_t parameters);
85
-
86
-
87
- /*! ZDICT_addEntropyTablesFromBuffer() :
88
-
89
- Given a content-only dictionary (built using any 3rd party algorithm),
90
- add entropy tables computed from an array of samples.
91
- Samples must be stored concatenated in a flat buffer `samplesBuffer`,
92
- supplied with an array of sizes `samplesSizes`, providing the size of each sample in order.
93
-
94
- The input dictionary content must be stored *at the end* of `dictBuffer`.
95
- Its size is `dictContentSize`.
96
- The resulting dictionary with added entropy tables will be *written back to `dictBuffer`*,
97
- starting from its beginning.
98
- @return : size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`).
99
- */
100
- size_t ZDICT_addEntropyTablesFromBuffer(void* dictBuffer, size_t dictContentSize, size_t dictBufferCapacity,
101
- const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples);
102
-
103
-
104
-
105
- #endif /* ZDICT_STATIC_LINKING_ONLY */
106
-
107
- #if defined (__cplusplus)
108
- }
109
- #endif
110
-
111
- #endif /* DICTBUILDER_H_001 */