Improve documentation of seqStore_t

dev
senhuang42 2020-10-27 10:43:37 -04:00
parent 96b0ff7886
commit 9171f920cd
3 changed files with 23 additions and 22 deletions

View File

@ -341,23 +341,28 @@ MEM_STATIC size_t ZSTD_limitCopy(void* dst, size_t dstCapacity, const void* src,
* Private declarations
*********************************************/
typedef struct seqDef_s {
U32 offset;
U32 offset; /* Offset code of the sequence */
U16 litLength;
U16 matchLength;
} seqDef;
typedef struct {
seqDef* sequencesStart;
seqDef* sequences;
seqDef* sequences; /* ptr to end of sequences */
BYTE* litStart;
BYTE* lit;
BYTE* lit; /* ptr to end of literals */
BYTE* llCode;
BYTE* mlCode;
BYTE* ofCode;
size_t maxNbSeq;
size_t maxNbLit;
U32 longLengthID; /* 0 == no longLength; 1 == Lit.longLength; 2 == Match.longLength; */
U32 longLengthPos;
/* longLengthPos and longLengthID to allow us to represent either a single litLength or matchLength
* in the seqStore that has a value larger than U16 (if it exists). To do so, we increment
* the existing value of the literal or match by 0x10000.
*/
U32 longLengthID; /* 0 == no longLength; 1 == Represent the long literal; 2 == Represent the long match; */
U32 longLengthPos; /* Index of the sequence to apply long length modification to */
} seqStore_t;
typedef struct {

View File

@ -2455,10 +2455,6 @@ static void ZSTD_copyBlockSequences(ZSTD_CCtx* zc)
outSeqs[i].litLength = seqStoreSeqs[i].litLength;
outSeqs[i].matchLength = seqStoreSeqs[i].matchLength + MINMATCH;
/* matchLength and litLength are stored with U16. longLengthPos
* and longLengthID to allow us to represent a single litLength or matchLength
* in the seqStore that has a value larger than U16 (if it exists).
*/
if (i == seqStore->longLengthPos) {
if (seqStore->longLengthID == 1) {
outSeqs[i].litLength += 0x10000;

View File

@ -1115,24 +1115,24 @@ typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params;
typedef struct {
unsigned int offset; /* The offset of the match.
* If == 0, then represents a block of literals, determined by litLength
*/
* If == 0, then represents a block of literals, determined by litLength
*/
unsigned int litLength; /* Literal length */
unsigned int matchLength; /* Match length. */
unsigned int rep; /* Represents which repeat offset is used. Ranges from [0, 3].
* If rep == 0, then this sequence does not contain a repeat offset.
* Otherwise:
* If litLength != 0:
* rep == 1 --> offset == repeat offset 1
* rep == 2 --> offset == repeat offset 2
* rep == 3 --> offset == repeat offset 3
* If litLength == 0:
* rep == 1 --> offset == repeat offset 2
* rep == 2 --> offset == repeat offset 3
* rep == 3 --> offset == repeat offset 1 - 1
*/
* If rep == 0, then this sequence does not contain a repeat offset.
* Otherwise:
* If litLength != 0:
* rep == 1 --> offset == repeat offset 1
* rep == 2 --> offset == repeat offset 2
* rep == 3 --> offset == repeat offset 3
* If litLength == 0:
* rep == 1 --> offset == repeat offset 2
* rep == 2 --> offset == repeat offset 3
* rep == 3 --> offset == repeat offset 1 - 1
*/
} ZSTD_Sequence;
typedef struct {