@@ -21,101 +21,22 @@ extern "C" {
21
21
22
22
/* *** Dependencies *** */
23
23
#include "zstd_deps.h" /* size_t */
24
-
25
-
26
- /* *** library symbols visibility *** */
27
- /* Note : when linking with -fvisibility=hidden on gcc, or by default on Visual,
28
- * HUF symbols remain "private" (internal symbols for library only).
29
- * Set macro FSE_DLL_EXPORT to 1 if you want HUF symbols visible on DLL interface */
30
- #if defined(FSE_DLL_EXPORT ) && (FSE_DLL_EXPORT == 1 ) && defined(__GNUC__ ) && (__GNUC__ >= 4 )
31
- # define HUF_PUBLIC_API __attribute__ ((visibility ("default")))
32
- #elif defined(FSE_DLL_EXPORT ) && (FSE_DLL_EXPORT == 1 ) /* Visual expected */
33
- # define HUF_PUBLIC_API __declspec(dllexport)
34
- #elif defined(FSE_DLL_IMPORT ) && (FSE_DLL_IMPORT == 1 )
35
- # define HUF_PUBLIC_API __declspec(dllimport) /* not required, just to generate faster code (saves a function pointer load from IAT and an indirect jump) */
36
- #else
37
- # define HUF_PUBLIC_API
38
- #endif
39
-
40
-
41
- /* ========================== */
42
- /* *** simple functions *** */
43
- /* ========================== */
44
-
45
- /** HUF_compress() :
46
- * Compress content from buffer 'src', of size 'srcSize', into buffer 'dst'.
47
- * 'dst' buffer must be already allocated.
48
- * Compression runs faster if `dstCapacity` >= HUF_compressBound(srcSize).
49
- * `srcSize` must be <= `HUF_BLOCKSIZE_MAX` == 128 KB.
50
- * @return : size of compressed data (<= `dstCapacity`).
51
- * Special values : if return == 0, srcData is not compressible => Nothing is stored within dst !!!
52
- * if HUF_isError(return), compression failed (more details using HUF_getErrorName())
53
- */
54
- HUF_PUBLIC_API size_t HUF_compress (void * dst , size_t dstCapacity ,
55
- const void * src , size_t srcSize );
56
-
57
- /** HUF_decompress() :
58
- * Decompress HUF data from buffer 'cSrc', of size 'cSrcSize',
59
- * into already allocated buffer 'dst', of minimum size 'dstSize'.
60
- * `originalSize` : **must** be the ***exact*** size of original (uncompressed) data.
61
- * Note : in contrast with FSE, HUF_decompress can regenerate
62
- * RLE (cSrcSize==1) and uncompressed (cSrcSize==dstSize) data,
63
- * because it knows size to regenerate (originalSize).
64
- * @return : size of regenerated data (== originalSize),
65
- * or an error code, which can be tested using HUF_isError()
66
- */
67
- HUF_PUBLIC_API size_t HUF_decompress (void * dst , size_t originalSize ,
68
- const void * cSrc , size_t cSrcSize );
24
+ #include "mem.h" /* U32 */
25
+ #define FSE_STATIC_LINKING_ONLY
26
+ #include "fse.h"
69
27
70
28
71
29
/* *** Tool functions *** */
72
- #define HUF_BLOCKSIZE_MAX (128 * 1024) /**< maximum input size for a single block compressed with HUF_compress */
73
- HUF_PUBLIC_API size_t HUF_compressBound (size_t size ); /**< maximum compressed size (worst case) */
30
+ #define HUF_BLOCKSIZE_MAX (128 * 1024) /**< maximum input size for a single block compressed with HUF_compress */
31
+ size_t HUF_compressBound (size_t size ); /**< maximum compressed size (worst case) */
74
32
75
33
/* Error Management */
76
- HUF_PUBLIC_API unsigned HUF_isError (size_t code ); /**< tells if a return value is an error code */
77
- HUF_PUBLIC_API const char * HUF_getErrorName (size_t code ); /**< provides error code string (useful for debugging) */
78
-
79
-
80
- /* *** Advanced function *** */
34
+ unsigned HUF_isError (size_t code ); /**< tells if a return value is an error code */
35
+ const char * HUF_getErrorName (size_t code ); /**< provides error code string (useful for debugging) */
81
36
82
- /** HUF_compress2() :
83
- * Same as HUF_compress(), but offers control over `maxSymbolValue` and `tableLog`.
84
- * `maxSymbolValue` must be <= HUF_SYMBOLVALUE_MAX .
85
- * `tableLog` must be `<= HUF_TABLELOG_MAX` . */
86
- HUF_PUBLIC_API size_t HUF_compress2 (void * dst , size_t dstCapacity ,
87
- const void * src , size_t srcSize ,
88
- unsigned maxSymbolValue , unsigned tableLog );
89
37
90
- /** HUF_compress4X_wksp() :
91
- * Same as HUF_compress2(), but uses externally allocated @workSpace.
92
- * @workSpace's size, aka @wkspSize, must be >= HUF_WORKSPACE_SIZE
93
- * @srcSize must be >= 6
94
- */
95
38
#define HUF_WORKSPACE_SIZE ((8 << 10) + 512 /* sorting scratch space */ )
96
39
#define HUF_WORKSPACE_SIZE_U64 (HUF_WORKSPACE_SIZE / sizeof(U64))
97
- HUF_PUBLIC_API size_t HUF_compress4X_wksp (void * dst , size_t dstCapacity ,
98
- const void * src , size_t srcSize ,
99
- unsigned maxSymbolValue , unsigned tableLog ,
100
- void * workSpace , size_t wkspSize );
101
-
102
- #endif /* HUF_H_298734234 */
103
-
104
- /* ******************************************************************
105
- * WARNING !!
106
- * The following section contains advanced and experimental definitions
107
- * which shall never be used in the context of a dynamic library,
108
- * because they are not guaranteed to remain stable in the future.
109
- * Only consider them in association with static linking.
110
- * *****************************************************************/
111
- #if defined(HUF_STATIC_LINKING_ONLY ) && !defined(HUF_H_HUF_STATIC_LINKING_ONLY )
112
- #define HUF_H_HUF_STATIC_LINKING_ONLY
113
-
114
- /* *** Dependencies *** */
115
- #include "mem.h" /* U32 */
116
- #define FSE_STATIC_LINKING_ONLY
117
- #include "fse.h"
118
-
119
40
120
41
/* *** Constants *** */
121
42
#define HUF_TABLELOG_MAX 12 /* max runtime value of tableLog (due to static allocation); can be modified up to HUF_TABLELOG_ABSOLUTEMAX */
@@ -156,20 +77,6 @@ typedef U32 HUF_DTable;
156
77
/* ****************************************
157
78
* Advanced decompression functions
158
79
******************************************/
159
- size_t HUF_decompress4X1 (void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< single-symbol decoder */
160
- #ifndef HUF_FORCE_DECOMPRESS_X1
161
- size_t HUF_decompress4X2 (void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< double-symbols decoder */
162
- #endif
163
-
164
- size_t HUF_decompress4X_DCtx (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< decodes RLE and uncompressed */
165
- 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 */
166
- 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 */
167
- size_t HUF_decompress4X1_DCtx (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< single-symbol decoder */
168
- size_t HUF_decompress4X1_DCtx_wksp (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize , void * workSpace , size_t wkspSize ); /**< single-symbol decoder */
169
- #ifndef HUF_FORCE_DECOMPRESS_X1
170
- size_t HUF_decompress4X2_DCtx (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< double-symbols decoder */
171
- 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 ); /**< double-symbols decoder */
172
- #endif
173
80
174
81
175
82
/* ****************************************
@@ -196,10 +103,8 @@ unsigned HUF_minTableLog(unsigned symbolCardinality);
196
103
unsigned HUF_cardinality (const unsigned * count , unsigned maxSymbolValue );
197
104
unsigned HUF_optimalTableLog (unsigned maxTableLog , size_t srcSize , unsigned maxSymbolValue , void * workSpace ,
198
105
size_t wkspSize , HUF_CElt * table , const unsigned * count , HUF_depth_mode depthMode ); /* table is used as scratch space for building and testing tables, not a return value */
199
- size_t HUF_buildCTable (HUF_CElt * CTable , const unsigned * count , unsigned maxSymbolValue , unsigned maxNbBits ); /* @return : maxNbBits; CTable and count can overlap. In which case, CTable will overwrite count content */
200
106
size_t HUF_writeCTable (void * dst , size_t maxDstSize , const HUF_CElt * CTable , unsigned maxSymbolValue , unsigned huffLog );
201
107
size_t HUF_writeCTable_wksp (void * dst , size_t maxDstSize , const HUF_CElt * CTable , unsigned maxSymbolValue , unsigned huffLog , void * workspace , size_t workspaceSize );
202
- size_t HUF_compress4X_usingCTable (void * dst , size_t dstSize , const void * src , size_t srcSize , const HUF_CElt * CTable );
203
108
size_t HUF_compress4X_usingCTable_bmi2 (void * dst , size_t dstSize , const void * src , size_t srcSize , const HUF_CElt * CTable , int bmi2 );
204
109
size_t HUF_estimateCompressedSize (const HUF_CElt * CTable , const unsigned * count , unsigned maxSymbolValue );
205
110
int HUF_validateCTable (const HUF_CElt * CTable , const unsigned * count , unsigned maxSymbolValue );
@@ -291,31 +196,11 @@ U32 HUF_selectDecoder (size_t dstSize, size_t cSrcSize);
291
196
#define HUF_DECOMPRESS_WORKSPACE_SIZE ((2 << 10) + (1 << 9))
292
197
#define HUF_DECOMPRESS_WORKSPACE_SIZE_U32 (HUF_DECOMPRESS_WORKSPACE_SIZE / sizeof(U32))
293
198
294
- #ifndef HUF_FORCE_DECOMPRESS_X2
295
- size_t HUF_readDTableX1 (HUF_DTable * DTable , const void * src , size_t srcSize );
296
- size_t HUF_readDTableX1_wksp (HUF_DTable * DTable , const void * src , size_t srcSize , void * workSpace , size_t wkspSize );
297
- #endif
298
- #ifndef HUF_FORCE_DECOMPRESS_X1
299
- size_t HUF_readDTableX2 (HUF_DTable * DTable , const void * src , size_t srcSize );
300
- size_t HUF_readDTableX2_wksp (HUF_DTable * DTable , const void * src , size_t srcSize , void * workSpace , size_t wkspSize );
301
- #endif
302
-
303
- size_t HUF_decompress4X_usingDTable (void * dst , size_t maxDstSize , const void * cSrc , size_t cSrcSize , const HUF_DTable * DTable );
304
- #ifndef HUF_FORCE_DECOMPRESS_X2
305
- size_t HUF_decompress4X1_usingDTable (void * dst , size_t maxDstSize , const void * cSrc , size_t cSrcSize , const HUF_DTable * DTable );
306
- #endif
307
- #ifndef HUF_FORCE_DECOMPRESS_X1
308
- size_t HUF_decompress4X2_usingDTable (void * dst , size_t maxDstSize , const void * cSrc , size_t cSrcSize , const HUF_DTable * DTable );
309
- #endif
310
-
311
199
312
200
/* ====================== */
313
201
/* single stream variants */
314
202
/* ====================== */
315
203
316
- size_t HUF_compress1X (void * dst , size_t dstSize , const void * src , size_t srcSize , unsigned maxSymbolValue , unsigned tableLog );
317
- size_t HUF_compress1X_wksp (void * dst , size_t dstSize , const void * src , size_t srcSize , unsigned maxSymbolValue , unsigned tableLog , void * workSpace , size_t wkspSize ); /**< `workSpace` must be a table of at least HUF_WORKSPACE_SIZE_U64 U64 */
318
- size_t HUF_compress1X_usingCTable (void * dst , size_t dstSize , const void * src , size_t srcSize , const HUF_CElt * CTable );
319
204
size_t HUF_compress1X_usingCTable_bmi2 (void * dst , size_t dstSize , const void * src , size_t srcSize , const HUF_CElt * CTable , int bmi2 );
320
205
/** HUF_compress1X_repeat() :
321
206
* Same as HUF_compress1X_wksp(), but considers using hufTable if *repeat != HUF_repeat_none.
@@ -330,28 +215,9 @@ size_t HUF_compress1X_repeat(void* dst, size_t dstSize,
330
215
HUF_CElt * hufTable , HUF_repeat * repeat , int preferRepeat , int bmi2 ,
331
216
int suspectUncompressible , HUF_depth_mode depthMode );
332
217
333
- size_t HUF_decompress1X1 (void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /* single-symbol decoder */
334
- #ifndef HUF_FORCE_DECOMPRESS_X1
335
- size_t HUF_decompress1X2 (void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /* double-symbol decoder */
336
- #endif
337
-
338
- size_t HUF_decompress1X_DCtx (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize );
339
- 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 );
340
- #ifndef HUF_FORCE_DECOMPRESS_X2
341
- size_t HUF_decompress1X1_DCtx (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< single-symbol decoder */
342
- size_t HUF_decompress1X1_DCtx_wksp (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize , void * workSpace , size_t wkspSize ); /**< single-symbol decoder */
343
- #endif
344
- #ifndef HUF_FORCE_DECOMPRESS_X1
345
- size_t HUF_decompress1X2_DCtx (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize ); /**< double-symbols decoder */
346
- 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 ); /**< double-symbols decoder */
347
- #endif
348
-
349
- 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 */
350
- #ifndef HUF_FORCE_DECOMPRESS_X2
351
- size_t HUF_decompress1X1_usingDTable (void * dst , size_t maxDstSize , const void * cSrc , size_t cSrcSize , const HUF_DTable * DTable );
352
- #endif
218
+ size_t HUF_decompress1X_DCtx_wksp_bmi2 (HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize , void * workSpace , size_t wkspSize , int bmi2 );
353
219
#ifndef HUF_FORCE_DECOMPRESS_X1
354
- size_t HUF_decompress1X2_usingDTable ( void * dst , size_t maxDstSize , const void * cSrc , size_t cSrcSize , const HUF_DTable * DTable );
220
+ size_t HUF_decompress1X2_DCtx_wksp_bmi2 ( HUF_DTable * dctx , void * dst , size_t dstSize , const void * cSrc , size_t cSrcSize , void * workSpace , size_t wkspSize , int bmi2 ); /**< double-symbols decoder */
355
221
#endif
356
222
357
223
/* BMI2 variants.
@@ -370,7 +236,7 @@ size_t HUF_readDTableX1_wksp_bmi2(HUF_DTable* DTable, const void* src, size_t sr
370
236
size_t HUF_readDTableX2_wksp_bmi2 (HUF_DTable * DTable , const void * src , size_t srcSize , void * workSpace , size_t wkspSize , int bmi2 );
371
237
#endif
372
238
373
- #endif /* HUF_STATIC_LINKING_ONLY */
239
+ #endif /* HUF_H_298734234 */
374
240
375
241
#if defined (__cplusplus )
376
242
}
0 commit comments