summaryrefslogtreecommitdiffstats
path: root/doc/lz4_manual.html
diff options
context:
space:
mode:
authorNick Terrell <terrelln@fb.com>2016-11-11 21:00:02 (GMT)
committerNick Terrell <terrelln@fb.com>2016-11-11 21:00:02 (GMT)
commit85aeb0e4bb9c0b8dd6f6caa00ac2d9c7a4452660 (patch)
tree70d0ae59b9ca98746ff4ff53cbbb8f8e98f4635d /doc/lz4_manual.html
parentdbfdd5131cfbcfb4e68312e36658912b144563f2 (diff)
downloadlz4-85aeb0e4bb9c0b8dd6f6caa00ac2d9c7a4452660.zip
lz4-85aeb0e4bb9c0b8dd6f6caa00ac2d9c7a4452660.tar.gz
lz4-85aeb0e4bb9c0b8dd6f6caa00ac2d9c7a4452660.tar.bz2
Expose internal types to remove strict aliasing
Diffstat (limited to 'doc/lz4_manual.html')
-rw-r--r--doc/lz4_manual.html68
1 files changed, 58 insertions, 10 deletions
diff --git a/doc/lz4_manual.html b/doc/lz4_manual.html
index 838dbf4..bc46645 100644
--- a/doc/lz4_manual.html
+++ b/doc/lz4_manual.html
@@ -10,10 +10,11 @@
<ol>
<li><a href="#Chapter1">Introduction</a></li>
<li><a href="#Chapter2">Tuning parameter</a></li>
-<li><a href="#Chapter3">Simple Functions</a></li>
-<li><a href="#Chapter4">Advanced Functions</a></li>
-<li><a href="#Chapter5">Streaming Compression Functions</a></li>
-<li><a href="#Chapter6">Streaming Decompression Functions</a></li>
+<li><a href="#Chapter3">Private definitions</a></li>
+<li><a href="#Chapter4">Simple Functions</a></li>
+<li><a href="#Chapter5">Advanced Functions</a></li>
+<li><a href="#Chapter6">Streaming Compression Functions</a></li>
+<li><a href="#Chapter7">Streaming Decompression Functions</a></li>
</ol>
<hr>
<a name="Chapter1"></a><h2>Introduction</h2><pre>
@@ -48,7 +49,45 @@ const char* LZ4_versionString (void);
</p></pre><BR>
-<a name="Chapter3"></a><h2>Simple Functions</h2><pre></pre>
+<a name="Chapter3"></a><h2>Private definitions</h2><pre>
+ Do not use these definitions.
+ They are exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`.
+ If you use these definitions in your code, it will break when you upgrade LZ4 to a new version.
+<BR></pre>
+
+<pre><b>typedef struct {
+ uint32_t hashTable[LZ4_HASH_SIZE_U32];
+ uint32_t currentOffset;
+ uint32_t initCheck;
+ const uint8_t* dictionary;
+ uint8_t* bufferStart; </b>/* obsolete, used for slideInputBuffer */<b>
+ uint32_t dictSize;
+} LZ4_stream_t_internal;
+</b></pre><BR>
+<pre><b>typedef struct {
+ const uint8_t* externalDict;
+ size_t extDictSize;
+ const uint8_t* prefixEnd;
+ size_t prefixSize;
+} LZ4_streamDecode_t_internal;
+</b></pre><BR>
+<pre><b>typedef struct {
+ unsigned int hashTable[LZ4_HASH_SIZE_U32];
+ unsigned int currentOffset;
+ unsigned int initCheck;
+ const unsigned char* dictionary;
+ unsigned char* bufferStart; </b>/* obsolete, used for slideInputBuffer */<b>
+ unsigned int dictSize;
+} LZ4_stream_t_internal;
+</b></pre><BR>
+<pre><b>typedef struct {
+ const unsigned char* externalDict;
+ size_t extDictSize;
+ const unsigned char* prefixEnd;
+ size_t prefixSize;
+} LZ4_streamDecode_t_internal;
+</b></pre><BR>
+<a name="Chapter4"></a><h2>Simple Functions</h2><pre></pre>
<pre><b>int LZ4_compress_default(const char* source, char* dest, int sourceSize, int maxDestSize);
</b><p> Compresses 'sourceSize' bytes from buffer 'source'
@@ -75,7 +114,7 @@ const char* LZ4_versionString (void);
It never writes outside output buffer, nor reads outside input buffer.
</p></pre><BR>
-<a name="Chapter4"></a><h2>Advanced Functions</h2><pre></pre>
+<a name="Chapter5"></a><h2>Advanced Functions</h2><pre></pre>
<pre><b>int LZ4_compressBound(int inputSize);
</b><p> Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible)
@@ -137,9 +176,14 @@ int LZ4_compress_fast_extState (void* state, const char* source, char* dest, int
This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets
</p></pre><BR>
-<a name="Chapter5"></a><h2>Streaming Compression Functions</h2><pre></pre>
+<a name="Chapter6"></a><h2>Streaming Compression Functions</h2><pre></pre>
-<pre><b>typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
+<pre><b>typedef struct {
+ union {
+ long long table[LZ4_STREAMSIZE_U64];
+ LZ4_stream_t_internal internal_donotuse;
+ };
+} LZ4_stream_t;
</b><p> information structure to track an LZ4 stream.
important : init this structure content before first use !
note : only allocated directly the structure if you are statically linking LZ4
@@ -187,9 +231,13 @@ int LZ4_freeStream (LZ4_stream_t* streamPtr);
</p></pre><BR>
-<a name="Chapter6"></a><h2>Streaming Decompression Functions</h2><pre></pre>
+<a name="Chapter7"></a><h2>Streaming Decompression Functions</h2><pre></pre>
-<pre><b>typedef struct { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; } LZ4_streamDecode_t;
+<pre><b>typedef struct {
+ union {
+ unsigned long long table[LZ4_STREAMDECODESIZE_U64];
+ LZ4_streamDecode_t_internal internal_donotuse;
+ };
</b></pre><BR>
<pre><b>LZ4_streamDecode_t* LZ4_createStreamDecode(void);
int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);