* 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 {
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;
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 {