diff options
author | yann.collet.73@gmail.com <yann.collet.73@gmail.com@650e7d94-2a16-8b24-b05c-7c0b3f6821cd> | 2011-05-25 22:25:57 (GMT) |
---|---|---|
committer | yann.collet.73@gmail.com <yann.collet.73@gmail.com@650e7d94-2a16-8b24-b05c-7c0b3f6821cd> | 2011-05-25 22:25:57 (GMT) |
commit | ca8d6c21e5700e7646266a084cb3d89f5bd1c6a2 (patch) | |
tree | f0b65b2807d8c66b34e0dd7062e6f1d1a22615f6 /lz4.h | |
parent | 06abb77c009836abbb79fbae910f71e7da721b0d (diff) | |
download | lz4-ca8d6c21e5700e7646266a084cb3d89f5bd1c6a2.zip lz4-ca8d6c21e5700e7646266a084cb3d89f5bd1c6a2.tar.gz lz4-ca8d6c21e5700e7646266a084cb3d89f5bd1c6a2.tar.bz2 |
Improved : safe type, for linux x64 (amd64) compatibility (Thanks to Erik Andersen)
Checked : OS X compatibility (Thanks Abhinav)
Corrected : Explicit unsigned constant for non C90-compliant C compilers (Thanks to Erik Andersen)
Changed : lowercase filename for case-sensitive file systems (like linux) (Thanks Abhinav & Erik)
Added : Makefile, for gcc (Thanks Abhinav & Erik)
git-svn-id: https://lz4.googlecode.com/svn/trunk@7 650e7d94-2a16-8b24-b05c-7c0b3f6821cd
Diffstat (limited to 'lz4.h')
-rw-r--r-- | lz4.h | 90 |
1 files changed, 90 insertions, 0 deletions
@@ -0,0 +1,90 @@ +/*
+ LZ4 - Fast LZ compression algorithm
+ Header File
+ Copyright (C) 2011, Yann Collet.
+ BSD License
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+
+//****************************
+// Instructions
+//****************************
+
+// Uncomment next line to ensure that LZ4_Decode will never write in destination buffer more than "decompressedSize" bytes
+// If commented, the decoder may write up to 3 bytes more than decompressedSize, so provide extra room in dest buffer for that
+// Recommendation : keep commented, for improved performance; ensure that destination buffer is at least decompressedSize + 3 Bytes
+// #define SAFEWRITEBUFFER
+
+
+//****************************
+// Simple Functions
+//****************************
+
+int LZ4_compress (char* source, char* dest, int isize);
+int LZ4_decode (char* source, char* dest, int isize);
+
+/*
+LZ4_compress :
+ return : the number of bytes in compressed buffer dest
+ note : destination buffer must be already allocated.
+ To avoid any problem, size it to handle worst cases situations (input data not compressible)
+ Worst case size is : "inputsize + 0.4%", with "0.4%" being at least 8 bytes.
+
+LZ4_decode :
+ return : the number of bytes in decoded buffer dest
+ note 1 : isize is the input size, therefore the compressed size
+ note 2 : destination buffer must be already allocated.
+ The program calling the decoder must know in advance the size of decoded stream to properly allocate the destination buffer
+ Note that, in fast mode, the destination buffer size must be at least "decompressedSize + 3 Bytes"
+*/
+
+
+//****************************
+// Advanced Functions
+//****************************
+
+int LZ4_compressCtx(void** ctx, char* source, char* dest, int isize);
+
+/*
+LZ4_compressCtx :
+ This function explicitly handles the CTX memory structure.
+ It avoids allocating/deallocating memory between each call, improving performance when malloc is time-consuming.
+
+ On first call : provide a *ctx=NULL; It will be automatically allocated.
+ On next calls : reuse the same ctx pointer.
+ Use different pointers for different threads when doing multi-threading.
+
+ note : performance difference is small, mostly noticeable when repetitively calling the compression algorithm on many small segments.
+*/
+
+
+#if defined (__cplusplus)
+}
+#endif
|