VR-Vantage 2.6 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lz4.h
Go to the documentation of this file.
1 /*
2  * LZ4 - Fast LZ compression algorithm
3  * Header File
4  * Copyright (C) 2011-2016, Yann Collet.
5 
6  BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
7 
8  Redistribution and use in source and binary forms, with or without
9  modification, are permitted provided that the following conditions are
10  met:
11 
12  * Redistributions of source code must retain the above copyright
13  notice, this list of conditions and the following disclaimer.
14  * Redistributions in binary form must reproduce the above
15  copyright notice, this list of conditions and the following disclaimer
16  in the documentation and/or other materials provided with the
17  distribution.
18 
19  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31  You can contact the author at :
32  - LZ4 homepage : http://www.lz4.org
33  - LZ4 source repository : https://github.com/lz4/lz4
34 */
35 #ifndef LZ4_H_2983827168210
36 #define LZ4_H_2983827168210
37 
38 #if defined (__cplusplus)
39 extern "C" {
40 #endif
41 
42 /* --- Dependency --- */
43 #include <stddef.h> /* size_t */
44 
45 
69 /*^***************************************************************
70 * Export parameters
71 *****************************************************************/
72 /*
73 * LZ4_DLL_EXPORT :
74 * Enable exporting of functions when building a Windows DLL
75 */
76 #if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1)
77 # define LZ4LIB_API __declspec(dllexport)
78 #elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)
79 # define LZ4LIB_API __declspec(dllimport) /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/
80 #else
81 # define LZ4LIB_API
82 #endif
83 
84 
85 /*------ Version ------*/
86 #define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */
87 #define LZ4_VERSION_MINOR 7 /* for new (non-breaking) interface capabilities */
88 #define LZ4_VERSION_RELEASE 5 /* for tweaks, bug-fixes, or development */
89 
90 #define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE)
91 
92 #define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE
93 #define LZ4_QUOTE(str) #str
94 #define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str)
95 #define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION)
96 
97 LZ4LIB_API int LZ4_versionNumber (void);
98 LZ4LIB_API const char* LZ4_versionString (void);
101 /*-************************************
102 * Tuning parameter
103 **************************************/
111 #ifndef LZ4_MEMORY_USAGE
112 # define LZ4_MEMORY_USAGE 14
113 #endif
114 
115 /*-************************************
116 * Simple Functions
117 **************************************/
131 LZ4LIB_API int LZ4_compress_default(const char* source, char* dest, int sourceSize, int maxDestSize);
132 
142 LZ4LIB_API int LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxDecompressedSize);
143 
144 
145 /*-************************************
146 * Advanced Functions
147 **************************************/
148 #define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */
149 #define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16)
150 
162 
171 LZ4LIB_API int LZ4_compress_fast (const char* source, char* dest, int sourceSize, int maxDestSize, int acceleration);
172 
173 
181 LZ4LIB_API int LZ4_sizeofState(void);
182 LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* source, char* dest, int inputSize, int maxDestSize, int acceleration);
183 
184 
196 LZ4LIB_API int LZ4_compress_destSize (const char* source, char* dest, int* sourceSizePtr, int targetDestSize);
197 
198 
210 LZ4LIB_API int LZ4_decompress_fast (const char* source, char* dest, int originalSize);
211 
224 LZ4LIB_API int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize);
225 
226 
227 /*-*********************************************
228 * Streaming Compression Functions
229 ***********************************************/
230 typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */
231 
237 LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr);
238 
243 LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr);
244 
251 LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize);
252 
260 LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int maxDstSize, int acceleration);
261 
269 LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int dictSize);
270 
271 
272 /*-**********************************************
273 * Streaming Decompression Functions
274 * Bufferless synchronous API
275 ************************************************/
276 typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* incomplete type (defined later) */
277 
282 
288 LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize);
289 
307 LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxDecompressedSize);
308 LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize);
309 
310 
316 LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxDecompressedSize, const char* dictStart, int dictSize);
317 LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize);
318 
319 
320 /*^**********************************************
321  * !!!!!! STATIC LINKING ONLY !!!!!!
322  ***********************************************/
323 /*-************************************
324  * Private definitions
325  **************************************
326  * Do not use these definitions.
327  * They are exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`.
328  * Using these definitions will expose code to API and/or ABI break in future versions of the library.
329  **************************************/
330 #define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2)
331 #define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE)
332 #define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */
333 
334 #if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
335 #include <stdint.h>
336 
337 typedef struct {
338  uint32_t hashTable[LZ4_HASH_SIZE_U32];
339  uint32_t currentOffset;
340  uint32_t initCheck;
341  const uint8_t* dictionary;
342  uint8_t* bufferStart; /* obsolete, used for slideInputBuffer */
343  uint32_t dictSize;
345 
346 typedef struct {
347  const uint8_t* externalDict;
348  size_t extDictSize;
349  const uint8_t* prefixEnd;
350  size_t prefixSize;
352 
353 #else
354 
355 typedef struct {
356  unsigned int hashTable[LZ4_HASH_SIZE_U32];
357  unsigned int currentOffset;
358  unsigned int initCheck;
359  const unsigned char* dictionary;
360  unsigned char* bufferStart; /* obsolete, used for slideInputBuffer */
361  unsigned int dictSize;
363 
364 typedef struct {
365  const unsigned char* externalDict;
366  size_t extDictSize;
367  const unsigned char* prefixEnd;
368  size_t prefixSize;
370 
371 #endif
372 
381 #define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4)
382 #define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(unsigned long long))
384  unsigned long long table[LZ4_STREAMSIZE_U64];
386 } ; /* previously typedef'd to LZ4_stream_t */
387 
388 
397 #define LZ4_STREAMDECODESIZE_U64 4
398 #define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long))
400  unsigned long long table[LZ4_STREAMDECODESIZE_U64];
402 } ; /* previously typedef'd to LZ4_streamDecode_t */
403 
404 
405 /*-************************************
406 * Obsolete Functions
407 **************************************/
408 
415 #ifdef LZ4_DISABLE_DEPRECATE_WARNINGS
416 # define LZ4_DEPRECATED(message) /* disable deprecation warnings */
417 #else
418 # define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
419 # if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */
420 # define LZ4_DEPRECATED(message) [[deprecated(message)]]
421 # elif (LZ4_GCC_VERSION >= 405) || defined(__clang__)
422 # define LZ4_DEPRECATED(message) __attribute__((deprecated(message)))
423 # elif (LZ4_GCC_VERSION >= 301)
424 # define LZ4_DEPRECATED(message) __attribute__((deprecated))
425 # elif defined(_MSC_VER)
426 # define LZ4_DEPRECATED(message) __declspec(deprecated(message))
427 # else
428 # pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler")
429 # define LZ4_DEPRECATED(message)
430 # endif
431 #endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */
432 
433 /* Obsolete compression functions */
434 LZ4_DEPRECATED("use LZ4_compress_default() instead") int LZ4_compress (const char* source, char* dest, int sourceSize);
435 LZ4_DEPRECATED("use LZ4_compress_default() instead") int LZ4_compress_limitedOutput (const char* source, char* dest, int sourceSize, int maxOutputSize);
436 LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize);
437 LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
438 LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize);
439 LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize);
440 
441 /* Obsolete decompression functions */
442 /* These function names are completely deprecated and must no longer be used.
443  They are only provided in lz4.c for compatibility with older programs.
444  - LZ4_uncompress is the same as LZ4_decompress_fast
445  - LZ4_uncompress_unknownOutputSize is the same as LZ4_decompress_safe
446  These function prototypes are now disabled; uncomment them only if you really need them.
447  It is highly recommended to stop using these prototypes and migrate to maintained ones */
448 /* int LZ4_uncompress (const char* source, char* dest, int outputSize); */
449 /* int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); */
450 
451 /* Obsolete streaming functions; use new streaming interface whenever possible */
452 LZ4_DEPRECATED("use LZ4_createStream() instead") void* LZ4_create (char* inputBuffer);
453 LZ4_DEPRECATED("use LZ4_createStream() instead") int LZ4_sizeofStreamState(void);
454 LZ4_DEPRECATED("use LZ4_resetStream() instead") int LZ4_resetStreamState(void* state, char* inputBuffer);
455 LZ4_DEPRECATED("use LZ4_saveDict() instead") char* LZ4_slideInputBuffer (void* state);
456 
457 /* Obsolete streaming decoding functions */
458 LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize);
459 LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize);
460 
461 
462 #if defined (__cplusplus)
463 }
464 #endif
465 
466 #endif /* LZ4_H_2983827168210 */
char int int maxOutputSize
Definition: lz4.h:435
const unsigned char * prefixEnd
Definition: lz4.h:367
#define LZ4LIB_API
Introduction.
Definition: lz4.h:81
#define LZ4_HASH_SIZE_U32
Definition: lz4.h:332
unsigned long long table[LZ4_STREAMSIZE_U64]
Definition: lz4.h:384
LZ4LIB_API int LZ4_sizeofState(void)
LZ4LIB_API void LZ4_resetStream(LZ4_stream_t *streamPtr)
const unsigned char * dictionary
Definition: lz4.h:359
size_t prefixSize
Definition: lz4.h:368
#define LZ4_STREAMSIZE_U64
Definition: lz4.h:381
LZ4LIB_API int LZ4_decompress_safe_continue(LZ4_streamDecode_t *LZ4_streamDecode, const char *source, char *dest, int compressedSize, int maxDecompressedSize)
#define LZ4_STREAMDECODESIZE_U64
Definition: lz4.h:397
Definition: lz4.h:399
unsigned int initCheck
Definition: lz4.h:358
char * dst
Definition: lz4.h:458
char int int maxDstSize
Definition: lz4.h:458
LZ4LIB_API int LZ4_decompress_safe_partial(const char *source, char *dest, int compressedSize, int targetOutputSize, int maxDecompressedSize)
Definition: lz4.h:364
size_t extDictSize
Definition: lz4.h:366
char int compressedSize
Definition: lz4.h:458
char * inputBuffer
Definition: lz4.h:454
LZ4_stream_t_internal internal_donotuse
Definition: lz4.h:385
LZ4LIB_API int LZ4_decompress_fast_continue(LZ4_streamDecode_t *LZ4_streamDecode, const char *source, char *dest, int originalSize)
unsigned long long table[LZ4_STREAMDECODESIZE_U64]
Definition: lz4.h:400
char int originalSize
Definition: lz4.h:459
Definition: lz4.h:355
LZ4LIB_API int LZ4_compress_fast_extState(void *state, const char *source, char *dest, int inputSize, int maxDestSize, int acceleration)
#define LZ4_DEPRECATED(message)
Definition: lz4.h:429
char int sourceSize
Definition: lz4.h:434
LZ4LIB_API int LZ4_freeStream(LZ4_stream_t *streamPtr)
LZ4LIB_API LZ4_stream_t * LZ4_createStream(void)
LZ4LIB_API const char * LZ4_versionString(void)
library version string; to be used when checking dll version
unsigned int currentOffset
Definition: lz4.h:357
LZ4LIB_API int LZ4_compress_default(const char *source, char *dest, int sourceSize, int maxDestSize)
LZ4LIB_API int LZ4_compress_fast_continue(LZ4_stream_t *streamPtr, const char *src, char *dst, int srcSize, int maxDstSize, int acceleration)
LZ4LIB_API int LZ4_saveDict(LZ4_stream_t *streamPtr, char *safeBuffer, int dictSize)
const char * source
Definition: lz4.h:436
LZ4LIB_API int LZ4_decompress_fast_usingDict(const char *source, char *dest, int originalSize, const char *dictStart, int dictSize)
LZ4LIB_API int LZ4_versionNumber(void)
library version number; to be used when checking dll version
LZ4LIB_API int LZ4_compress_fast(const char *source, char *dest, int sourceSize, int maxDestSize, int acceleration)
LZ4_streamDecode_t_internal internal_donotuse
Definition: lz4.h:401
LZ4LIB_API int LZ4_compress_destSize(const char *source, char *dest, int *sourceSizePtr, int targetDestSize)
const char char int inputSize
Definition: lz4.h:436
LZ4LIB_API int LZ4_decompress_safe_usingDict(const char *source, char *dest, int compressedSize, int maxDecompressedSize, const char *dictStart, int dictSize)
LZ4LIB_API LZ4_streamDecode_t * LZ4_createStreamDecode(void)
LZ4LIB_API int LZ4_decompress_fast(const char *source, char *dest, int originalSize)
LZ4LIB_API int LZ4_loadDict(LZ4_stream_t *streamPtr, const char *dictionary, int dictSize)
LZ4LIB_API int LZ4_decompress_safe(const char *source, char *dest, int compressedSize, int maxDecompressedSize)
unsigned int dictSize
Definition: lz4.h:361
const unsigned char * externalDict
Definition: lz4.h:365
LZ4LIB_API int LZ4_setStreamDecode(LZ4_streamDecode_t *LZ4_streamDecode, const char *dictionary, int dictSize)
Definition: lz4.h:383
unsigned char * bufferStart
Definition: lz4.h:360
LZ4LIB_API int LZ4_freeStreamDecode(LZ4_streamDecode_t *LZ4_stream)
char * dest
Definition: lz4.h:434
LZ4LIB_API int LZ4_compressBound(int inputSize)


Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)