diff options
author | Yann Collet <cyan@fb.com> | 2017-08-15 23:57:00 (GMT) |
---|---|---|
committer | Yann Collet <cyan@fb.com> | 2017-08-15 23:57:00 (GMT) |
commit | a1f3a27e9b3caf42d31100f96bbb88866e08a517 (patch) | |
tree | 014922fceee22f63d46a0d04328234c3711f4799 /lib/lz4frame_static.h | |
parent | 01cdbfb5feda4adee65cc3da04b426c0c22368a3 (diff) | |
parent | af9d72b7f6809ec972787c446d464a8f9be443ba (diff) | |
download | lz4-a1f3a27e9b3caf42d31100f96bbb88866e08a517.zip lz4-a1f3a27e9b3caf42d31100f96bbb88866e08a517.tar.gz lz4-a1f3a27e9b3caf42d31100f96bbb88866e08a517.tar.bz2 |
Merge branch 'dev' into installVars and fixed conflicts
Diffstat (limited to 'lib/lz4frame_static.h')
-rw-r--r-- | lib/lz4frame_static.h | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/lib/lz4frame_static.h b/lib/lz4frame_static.h index d3bae82..1899f8e 100644 --- a/lib/lz4frame_static.h +++ b/lib/lz4frame_static.h @@ -59,7 +59,7 @@ extern "C" { ITEM(ERROR_contentChecksumFlag_invalid) \ ITEM(ERROR_compressionLevel_invalid) \ ITEM(ERROR_headerVersion_wrong) \ - ITEM(ERROR_blockChecksum_unsupported) \ + ITEM(ERROR_blockChecksum_invalid) \ ITEM(ERROR_reservedFlag_set) \ ITEM(ERROR_allocation_failed) \ ITEM(ERROR_srcSize_tooLarge) \ @@ -82,6 +82,60 @@ typedef enum { LZ4F_LIST_ERRORS(LZ4F_GENERATE_ENUM) } LZ4F_errorCodes; LZ4F_errorCodes LZ4F_getErrorCode(size_t functionResult); + +/********************************** + * Bulk processing dictionary API + *********************************/ +typedef struct LZ4F_CDict_s LZ4F_CDict; + +/*! LZ4_createCDict() : + * When compressing multiple messages / blocks with the same dictionary, it's recommended to load it just once. + * LZ4_createCDict() will create a digested dictionary, ready to start future compression operations without startup delay. + * LZ4_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only. + * `dictBuffer` can be released after LZ4_CDict creation, since its content is copied within CDict */ +LZ4F_CDict* LZ4F_createCDict(const void* dictBuffer, size_t dictSize); +void LZ4F_freeCDict(LZ4F_CDict* CDict); + + +/*! LZ4_compressFrame_usingCDict() : + * Compress an entire srcBuffer into a valid LZ4 frame using a digested Dictionary. + * If cdict==NULL, compress without a dictionary. + * dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * If this condition is not respected, function will fail (@return an errorCode). + * The LZ4F_preferences_t structure is optional : you may provide NULL as argument, + * but it's not recommended, as it's the only way to provide dictID in the frame header. + * @return : number of bytes written into dstBuffer. + * or an error code if it fails (can be tested using LZ4F_isError()) */ +size_t LZ4F_compressFrame_usingCDict(void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* preferencesPtr); + + +/*! LZ4F_compressBegin_usingCDict() : + * Inits streaming dictionary compression, and writes the frame header into dstBuffer. + * dstCapacity must be >= LZ4F_HEADER_SIZE_MAX bytes. + * `prefsPtr` is optional : you may provide NULL as argument, + * however, it's the only way to provide dictID in the frame header. + * @return : number of bytes written into dstBuffer for the header, + * or an error code (which can be tested using LZ4F_isError()) */ +size_t LZ4F_compressBegin_usingCDict(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* prefsPtr); + + +/*! LZ4F_decompress_usingDict() : + * Same as LZ4F_decompress(), using a predefined dictionary. + * Dictionary is used "in place", without any preprocessing. + * It must remain accessible throughout the entire frame decoding. */ +size_t LZ4F_decompress_usingDict(LZ4F_dctx* dctxPtr, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const void* dict, size_t dictSize, + const LZ4F_decompressOptions_t* decompressOptionsPtr); + + #if defined (__cplusplus) } #endif |