13#if defined (__cplusplus)
26#if defined(_WIN32) && defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1)
27# define ZSTDLIB_API __declspec(dllexport)
34#define ZSTD_VERSION_MAJOR 1
35#define ZSTD_VERSION_MINOR 1
36#define ZSTD_VERSION_RELEASE 0
38#define ZSTD_LIB_VERSION ZSTD_VERSION_MAJOR.ZSTD_VERSION_MINOR.ZSTD_VERSION_RELEASE
39#define ZSTD_QUOTE(str) #str
40#define ZSTD_EXPAND_AND_QUOTE(str) ZSTD_QUOTE(str)
41#define ZSTD_VERSION_STRING ZSTD_EXPAND_AND_QUOTE(ZSTD_LIB_VERSION)
43#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
56 const void* src,
size_t srcSize,
57 int compressionLevel);
66 const void* src,
size_t compressedSize);
123 void* dst,
size_t dstCapacity,
124 const void* src,
size_t srcSize,
125 const void* dict,
size_t dictSize,
126 int compressionLevel);
133 void* dst,
size_t dstCapacity,
134 const void* src,
size_t srcSize,
135 const void* dict,
size_t dictSize);
153 void* dst,
size_t dstCapacity,
154 const void* src,
size_t srcSize,
168 void* dst,
size_t dstCapacity,
169 const void* src,
size_t srcSize,
277#ifdef ZSTD_STATIC_LINKING_ONLY
287#define ZSTD_MAGICNUMBER 0xFD2FB528
288#define ZSTD_MAGIC_SKIPPABLE_START 0x184D2A50U
290#define ZSTD_WINDOWLOG_MAX_32 25
291#define ZSTD_WINDOWLOG_MAX_64 27
292#define ZSTD_WINDOWLOG_MAX ((U32)(MEM_32bits() ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64))
293#define ZSTD_WINDOWLOG_MIN 10
294#define ZSTD_HASHLOG_MAX ZSTD_WINDOWLOG_MAX
295#define ZSTD_HASHLOG_MIN 6
296#define ZSTD_CHAINLOG_MAX (ZSTD_WINDOWLOG_MAX+1)
297#define ZSTD_CHAINLOG_MIN ZSTD_HASHLOG_MIN
298#define ZSTD_HASHLOG3_MAX 17
299#define ZSTD_SEARCHLOG_MAX (ZSTD_WINDOWLOG_MAX-1)
300#define ZSTD_SEARCHLOG_MIN 1
301#define ZSTD_SEARCHLENGTH_MAX 7
302#define ZSTD_SEARCHLENGTH_MIN 3
303#define ZSTD_TARGETLENGTH_MIN 4
304#define ZSTD_TARGETLENGTH_MAX 999
306#define ZSTD_FRAMEHEADERSIZE_MAX 18
307static const size_t ZSTD_frameHeaderSize_prefix = 5;
308static const size_t ZSTD_frameHeaderSize_min = 6;
309static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX;
310static const size_t ZSTD_skippableHeaderSize = 8;
314typedef enum { ZSTD_fast, ZSTD_dfast, ZSTD_greedy, ZSTD_lazy, ZSTD_lazy2, ZSTD_btlazy2, ZSTD_btopt } ZSTD_strategy;
321 unsigned searchLength;
322 unsigned targetLength;
323 ZSTD_strategy strategy;
324} ZSTD_compressionParameters;
327 unsigned contentSizeFlag;
328 unsigned checksumFlag;
329 unsigned noDictIDFlag;
330} ZSTD_frameParameters;
333 ZSTD_compressionParameters cParams;
334 ZSTD_frameParameters fParams;
338typedef void* (*ZSTD_allocFunction) (
void* opaque,
size_t size);
339typedef void (*ZSTD_freeFunction) (
void* opaque,
void* address);
340typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree;
void* opaque; } ZSTD_customMem;
349ZSTDLIB_API size_t ZSTD_estimateCCtxSize(ZSTD_compressionParameters cParams);
362 ZSTD_parameters params, ZSTD_customMem customMem);
371ZSTDLIB_API ZSTD_parameters ZSTD_getParams(
int compressionLevel,
unsigned long long srcSize,
size_t dictSize);
376ZSTDLIB_API ZSTD_compressionParameters ZSTD_getCParams(
int compressionLevel,
unsigned long long srcSize,
size_t dictSize);
380ZSTDLIB_API size_t ZSTD_checkCParams(ZSTD_compressionParameters params);
385ZSTDLIB_API ZSTD_compressionParameters ZSTD_adjustCParams(ZSTD_compressionParameters cPar,
unsigned long long srcSize,
size_t dictSize);
390 void* dst,
size_t dstCapacity,
391 const void* src,
size_t srcSize,
392 const void* dict,
size_t dictSize,
393 ZSTD_parameters params);
422ZSTDLIB_API size_t ZSTD_initCStream_usingDict(
ZSTD_CStream* zcs,
const void* dict,
size_t dictSize,
int compressionLevel);
424 ZSTD_parameters params,
unsigned long long pledgedSrcSize);
431typedef enum { ZSTDdsp_maxWindowSize } ZSTD_DStreamParameter_e;
435ZSTDLIB_API size_t ZSTD_setDStreamParameter(
ZSTD_DStream* zds, ZSTD_DStreamParameter_e paramType,
unsigned paramValue);
448ZSTDLIB_API size_t ZSTD_compressBegin_usingDict(
ZSTD_CCtx* cctx,
const void* dict,
size_t dictSize,
int compressionLevel);
449ZSTDLIB_API size_t ZSTD_compressBegin_advanced(
ZSTD_CCtx* cctx,
const void* dict,
size_t dictSize, ZSTD_parameters params,
unsigned long long pledgedSrcSize);
452ZSTDLIB_API size_t ZSTD_compressContinue(
ZSTD_CCtx* cctx,
void* dst,
size_t dstCapacity,
const void* src,
size_t srcSize);
453ZSTDLIB_API size_t ZSTD_compressEnd(
ZSTD_CCtx* cctx,
void* dst,
size_t dstCapacity,
const void* src,
size_t srcSize);
485 unsigned long long frameContentSize;
488 unsigned checksumFlag;
491ZSTDLIB_API size_t ZSTD_getFrameParams(ZSTD_frameParams* fparamsPtr,
const void* src,
size_t srcSize);
494ZSTDLIB_API size_t ZSTD_decompressBegin_usingDict(
ZSTD_DCtx* dctx,
const void* dict,
size_t dictSize);
498ZSTDLIB_API size_t ZSTD_decompressContinue(
ZSTD_DCtx* dctx,
void* dst,
size_t dstCapacity,
const void* src,
size_t srcSize);
500typedef enum { ZSTDnit_frameHeader, ZSTDnit_blockHeader, ZSTDnit_block, ZSTDnit_lastBlock, ZSTDnit_checksum, ZSTDnit_skippableFrame } ZSTD_nextInputType_e;
587#define ZSTD_BLOCKSIZE_ABSOLUTEMAX (128 * 1024)
589ZSTDLIB_API size_t ZSTD_compressBlock (
ZSTD_CCtx* cctx,
void* dst,
size_t dstCapacity,
const void* src,
size_t srcSize);
590ZSTDLIB_API size_t ZSTD_decompressBlock(
ZSTD_DCtx* dctx,
void* dst,
size_t dstCapacity,
const void* src,
size_t srcSize);
596#if defined (__cplusplus)
const void * src
Definition zstd.h:178
size_t size
Definition zstd.h:179
size_t pos
Definition zstd.h:180
size_t size
Definition zstd.h:185
size_t pos
Definition zstd.h:186
void * dst
Definition zstd.h:184
ZSTDLIB_API size_t ZSTD_decompress(void *dst, size_t dstCapacity, const void *src, size_t compressedSize)
ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void *src, size_t srcSize)
ZSTDLIB_API size_t ZSTD_compressBound(size_t srcSize)
ZSTDLIB_API size_t ZSTD_initCStream(ZSTD_CStream *zcs, int compressionLevel)
ZSTDLIB_API size_t ZSTD_decompress_usingDDict(ZSTD_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, const ZSTD_DDict *ddict)
ZSTDLIB_API size_t ZSTD_compress(void *dst, size_t dstCapacity, const void *src, size_t srcSize, int compressionLevel)
struct ZSTD_inBuffer_s ZSTD_inBuffer
ZSTDLIB_API size_t ZSTD_initDStream(ZSTD_DStream *zds)
ZSTDLIB_API size_t ZSTD_CStreamInSize(void)
ZSTDLIB_API size_t ZSTD_freeDCtx(ZSTD_DCtx *dctx)
ZSTDLIB_API size_t ZSTD_DStreamOutSize(void)
ZSTDLIB_API size_t ZSTD_DStreamInSize(void)
ZSTDLIB_API size_t ZSTD_compress_usingCDict(ZSTD_CCtx *cctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, const ZSTD_CDict *cdict)
ZSTDLIB_API size_t ZSTD_compressStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output, ZSTD_inBuffer *input)
struct ZSTD_DStream_s ZSTD_DStream
Definition zstd.h:265
ZSTDLIB_API size_t ZSTD_freeCCtx(ZSTD_CCtx *cctx)
ZSTDLIB_API size_t ZSTD_compress_usingDict(ZSTD_CCtx *ctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, const void *dict, size_t dictSize, int compressionLevel)
ZSTDLIB_API ZSTD_DCtx * ZSTD_createDCtx(void)
ZSTDLIB_API size_t ZSTD_freeCDict(ZSTD_CDict *CDict)
ZSTDLIB_API ZSTD_CDict * ZSTD_createCDict(const void *dict, size_t dictSize, int compressionLevel)
ZSTDLIB_API size_t ZSTD_freeCStream(ZSTD_CStream *zcs)
struct ZSTD_outBuffer_s ZSTD_outBuffer
ZSTDLIB_API size_t ZSTD_decompressStream(ZSTD_DStream *zds, ZSTD_outBuffer *output, ZSTD_inBuffer *input)
struct ZSTD_CDict_s ZSTD_CDict
Definition zstd.h:144
ZSTDLIB_API size_t ZSTD_freeDDict(ZSTD_DDict *ddict)
struct ZSTD_CCtx_s ZSTD_CCtx
Definition zstd.h:98
struct ZSTD_DCtx_s ZSTD_DCtx
Definition zstd.h:107
#define ZSTDLIB_API
Definition zstd.h:29
ZSTDLIB_API size_t ZSTD_flushStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output)
ZSTDLIB_API size_t ZSTD_compressCCtx(ZSTD_CCtx *ctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, int compressionLevel)
ZSTDLIB_API const char * ZSTD_getErrorName(size_t code)
ZSTDLIB_API ZSTD_DStream * ZSTD_createDStream(void)
ZSTDLIB_API size_t ZSTD_decompress_usingDict(ZSTD_DCtx *dctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize, const void *dict, size_t dictSize)
ZSTDLIB_API unsigned ZSTD_isError(size_t code)
ZSTDLIB_API ZSTD_CStream * ZSTD_createCStream(void)
ZSTDLIB_API size_t ZSTD_endStream(ZSTD_CStream *zcs, ZSTD_outBuffer *output)
ZSTDLIB_API size_t ZSTD_decompressDCtx(ZSTD_DCtx *ctx, void *dst, size_t dstCapacity, const void *src, size_t srcSize)
ZSTDLIB_API size_t ZSTD_freeDStream(ZSTD_DStream *zds)
ZSTDLIB_API ZSTD_DDict * ZSTD_createDDict(const void *dict, size_t dictSize)
ZSTDLIB_API unsigned ZSTD_versionNumber(void)
struct ZSTD_DDict_s ZSTD_DDict
Definition zstd.h:160
ZSTDLIB_API size_t ZSTD_CStreamOutSize(void)
struct ZSTD_CStream_s ZSTD_CStream
Definition zstd.h:228
ZSTDLIB_API ZSTD_CCtx * ZSTD_createCCtx(void)
ZSTDLIB_API int ZSTD_maxCLevel(void)