Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
zstd_internal.h File Reference
#include "compiler.h"
#include "cpu.h"
#include "mem.h"
#include "debug.h"
#include "error_private.h"
#include "../zstd.h"
#include "fse.h"
#include "huf.h"
#include "xxhash.h"
#include "zstd_trace.h"

Go to the source code of this file.

Data Structures

struct  seqDef_s
 
struct  seqStore_t
 
struct  ZSTD_sequenceLength
 
struct  ZSTD_frameSizeInfo
 
struct  blockProperties_t
 

Macros

#define ZSTD_STATIC_LINKING_ONLY
 
#define FSE_STATIC_LINKING_ONLY
 
#define HUF_STATIC_LINKING_ONLY
 
#define XXH_STATIC_LINKING_ONLY   /* XXH64_state_t */
 
#define ZSTD_STATIC_ASSERT(c)
 
#define ZSTD_isError   ERR_isError /* for inlining */
 
#define FSE_isError   ERR_isError
 
#define HUF_isError   ERR_isError
 
#define MIN(a, b)
 
#define MAX(a, b)
 
#define BOUNDED(min, val, max)
 
#define ZSTD_OPT_NUM   (1<<12)
 
#define ZSTD_REP_NUM   3 /* number of repcodes */
 
#define KB   *(1 <<10)
 
#define MB   *(1 <<20)
 
#define GB   *(1U<<30)
 
#define BIT7   128
 
#define BIT6   64
 
#define BIT5   32
 
#define BIT4   16
 
#define BIT1   2
 
#define BIT0   1
 
#define ZSTD_WINDOWLOG_ABSOLUTEMIN   10
 
#define ZSTD_FRAMEIDSIZE   4 /* magic number size */
 
#define ZSTD_BLOCKHEADERSIZE   3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */
 
#define ZSTD_FRAMECHECKSUMSIZE   4
 
#define MIN_SEQUENCES_SIZE   1 /* nbSeq==0 */
 
#define MIN_CBLOCK_SIZE   (1 /*litCSize*/ + 1 /* RLE or RAW */ + MIN_SEQUENCES_SIZE /* nbSeq==0 */) /* for a non-null block */
 
#define HufLog   12
 
#define LONGNBSEQ   0x7F00
 
#define MINMATCH   3
 
#define Litbits   8
 
#define MaxLit   ((1<<Litbits) - 1)
 
#define MaxML   52
 
#define MaxLL   35
 
#define DefaultMaxOff   28
 
#define MaxOff   31
 
#define MaxSeq   MAX(MaxLL, MaxML) /* Assumption : MaxOff < MaxLL,MaxML */
 
#define MLFSELog   9
 
#define LLFSELog   9
 
#define OffFSELog   8
 
#define MaxFSELog   MAX(MAX(MLFSELog, LLFSELog), OffFSELog)
 
#define ZSTD_MAX_HUF_HEADER_SIZE   128 /* header + <= 127 byte tree description */
 
#define ZSTD_MAX_FSE_HEADERS_SIZE   (((MaxML + 1) * MLFSELog + (MaxLL + 1) * LLFSELog + (MaxOff + 1) * OffFSELog + 7) / 8)
 
#define LL_DEFAULTNORMLOG   6 /* for static allocation */
 
#define ML_DEFAULTNORMLOG   6 /* for static allocation */
 
#define OF_DEFAULTNORMLOG   5 /* for static allocation */
 
#define COPY8(d, s)
 
#define COPY16(d, s)
 
#define WILDCOPY_OVERLENGTH   32
 
#define WILDCOPY_VECLEN   16
 
#define ZSTD_WORKSPACETOOLARGE_FACTOR   3
 
#define ZSTD_WORKSPACETOOLARGE_MAXDURATION   128
 

Typedefs

typedef struct seqDef_s seqDef
 

Enumerations

enum  blockType_e { bt_raw , bt_rle , bt_compressed , bt_reserved }
 
enum  symbolEncodingType_e { set_basic , set_rle , set_compressed , set_repeat }
 
enum  ZSTD_overlap_e { ZSTD_no_overlap , ZSTD_overlap_src_before_dst }
 
enum  ZSTD_bufferMode_e { ZSTD_bm_buffered = 0 , ZSTD_bm_stable = 1 }
 
enum  ZSTD_longLengthType_e { ZSTD_llt_none = 0 , ZSTD_llt_literalLength = 1 , ZSTD_llt_matchLength = 2 }
 

Functions

MEM_STATIC FORCE_INLINE_ATTR void ZSTD_wildcopy (void *dst, const void *src, ptrdiff_t length, ZSTD_overlap_e const ovtype)
 
MEM_STATIC size_t ZSTD_limitCopy (void *dst, size_t dstCapacity, const void *src, size_t srcSize)
 
MEM_STATIC ZSTD_sequenceLength ZSTD_getSequenceLength (seqStore_t const *seqStore, seqDef const *seq)
 
const seqStore_tZSTD_getSeqStore (const ZSTD_CCtx *ctx)
 
void ZSTD_seqToCodes (const seqStore_t *seqStorePtr)
 
void * ZSTD_customMalloc (size_t size, ZSTD_customMem customMem)
 
void * ZSTD_customCalloc (size_t size, ZSTD_customMem customMem)
 
void ZSTD_customFree (void *ptr, ZSTD_customMem customMem)
 
MEM_STATIC U32 ZSTD_highbit32 (U32 val)
 
MEM_STATIC unsigned ZSTD_countTrailingZeros (size_t val)
 
void ZSTD_invalidateRepCodes (ZSTD_CCtx *cctx)
 
size_t ZSTD_getcBlockSize (const void *src, size_t srcSize, blockProperties_t *bpPtr)
 
size_t ZSTD_decodeSeqHeaders (ZSTD_DCtx *dctx, int *nbSeqPtr, const void *src, size_t srcSize)
 
MEM_STATIC int ZSTD_cpuSupportsBmi2 (void)
 

Macro Definition Documentation

◆ BIT0

#define BIT0   1

◆ BIT1

#define BIT1   2

◆ BIT4

#define BIT4   16

◆ BIT5

#define BIT5   32

◆ BIT6

#define BIT6   64

◆ BIT7

#define BIT7   128

◆ BOUNDED

#define BOUNDED ( min,
val,
max )
Value:
(MAX(min,MIN(val,max)))
#define min(a, b)
Definition compress42.c:304
#define MIN(a, b)
Definition zstd_internal.h:59
#define MAX(a, b)
Definition zstd_internal.h:60

◆ COPY16

#define COPY16 ( d,
s )
Value:
{ ZSTD_copy16(d,s); d+=16; s+=16; }
#define d(i)
Definition sha256.c:44

◆ COPY8

#define COPY8 ( d,
s )
Value:
{ ZSTD_copy8(d,s); d+=8; s+=8; }

◆ DefaultMaxOff

#define DefaultMaxOff   28

◆ FSE_isError

#define FSE_isError   ERR_isError

◆ FSE_STATIC_LINKING_ONLY

#define FSE_STATIC_LINKING_ONLY

◆ GB

#define GB   *(1U<<30)

◆ HUF_isError

#define HUF_isError   ERR_isError

◆ HUF_STATIC_LINKING_ONLY

#define HUF_STATIC_LINKING_ONLY

◆ HufLog

#define HufLog   12

◆ KB

#define KB   *(1 <<10)

◆ Litbits

#define Litbits   8

◆ LL_DEFAULTNORMLOG

#define LL_DEFAULTNORMLOG   6 /* for static allocation */

◆ LLFSELog

#define LLFSELog   9

◆ LONGNBSEQ

#define LONGNBSEQ   0x7F00

◆ MAX

#define MAX ( a,
b )
Value:
((a)>(b) ? (a) : (b))
#define b(i)
Definition sha256.c:42
#define a(i)
Definition sha256.c:41

◆ MaxFSELog

#define MaxFSELog   MAX(MAX(MLFSELog, LLFSELog), OffFSELog)

◆ MaxLit

#define MaxLit   ((1<<Litbits) - 1)

◆ MaxLL

#define MaxLL   35

◆ MaxML

#define MaxML   52

◆ MaxOff

#define MaxOff   31

◆ MaxSeq

#define MaxSeq   MAX(MaxLL, MaxML) /* Assumption : MaxOff < MaxLL,MaxML */

◆ MB

#define MB   *(1 <<20)

◆ MIN

#define MIN ( a,
b )
Value:
((a)<(b) ? (a) : (b))

◆ MIN_CBLOCK_SIZE

#define MIN_CBLOCK_SIZE   (1 /*litCSize*/ + 1 /* RLE or RAW */ + MIN_SEQUENCES_SIZE /* nbSeq==0 */) /* for a non-null block */

◆ MIN_SEQUENCES_SIZE

#define MIN_SEQUENCES_SIZE   1 /* nbSeq==0 */

◆ MINMATCH

#define MINMATCH   3

◆ ML_DEFAULTNORMLOG

#define ML_DEFAULTNORMLOG   6 /* for static allocation */

◆ MLFSELog

#define MLFSELog   9

◆ OF_DEFAULTNORMLOG

#define OF_DEFAULTNORMLOG   5 /* for static allocation */

◆ OffFSELog

#define OffFSELog   8

◆ WILDCOPY_OVERLENGTH

#define WILDCOPY_OVERLENGTH   32

◆ WILDCOPY_VECLEN

#define WILDCOPY_VECLEN   16

◆ XXH_STATIC_LINKING_ONLY

#define XXH_STATIC_LINKING_ONLY   /* XXH64_state_t */

◆ ZSTD_BLOCKHEADERSIZE

#define ZSTD_BLOCKHEADERSIZE   3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */

◆ ZSTD_FRAMECHECKSUMSIZE

#define ZSTD_FRAMECHECKSUMSIZE   4

◆ ZSTD_FRAMEIDSIZE

#define ZSTD_FRAMEIDSIZE   4 /* magic number size */

◆ ZSTD_isError

#define ZSTD_isError   ERR_isError /* for inlining */

◆ ZSTD_MAX_FSE_HEADERS_SIZE

#define ZSTD_MAX_FSE_HEADERS_SIZE   (((MaxML + 1) * MLFSELog + (MaxLL + 1) * LLFSELog + (MaxOff + 1) * OffFSELog + 7) / 8)

◆ ZSTD_MAX_HUF_HEADER_SIZE

#define ZSTD_MAX_HUF_HEADER_SIZE   128 /* header + <= 127 byte tree description */

◆ ZSTD_OPT_NUM

#define ZSTD_OPT_NUM   (1<<12)

◆ ZSTD_REP_NUM

#define ZSTD_REP_NUM   3 /* number of repcodes */

◆ ZSTD_STATIC_ASSERT

#define ZSTD_STATIC_ASSERT ( c)
Value:
#define c(i)
Definition sha256.c:43
#define DEBUG_STATIC_ASSERT(c)
Definition debug.h:43

◆ ZSTD_STATIC_LINKING_ONLY

#define ZSTD_STATIC_LINKING_ONLY

◆ ZSTD_WINDOWLOG_ABSOLUTEMIN

#define ZSTD_WINDOWLOG_ABSOLUTEMIN   10

◆ ZSTD_WORKSPACETOOLARGE_FACTOR

#define ZSTD_WORKSPACETOOLARGE_FACTOR   3

◆ ZSTD_WORKSPACETOOLARGE_MAXDURATION

#define ZSTD_WORKSPACETOOLARGE_MAXDURATION   128

Typedef Documentation

◆ seqDef

typedef struct seqDef_s seqDef

Enumeration Type Documentation

◆ blockType_e

Enumerator
bt_raw 
bt_rle 
bt_compressed 
bt_reserved 

◆ symbolEncodingType_e

Enumerator
set_basic 
set_rle 
set_compressed 
set_repeat 

◆ ZSTD_bufferMode_e

Enumerator
ZSTD_bm_buffered 
ZSTD_bm_stable 

◆ ZSTD_longLengthType_e

Enumerator
ZSTD_llt_none 
ZSTD_llt_literalLength 
ZSTD_llt_matchLength 

◆ ZSTD_overlap_e

Enumerator
ZSTD_no_overlap 
ZSTD_overlap_src_before_dst 

Function Documentation

◆ ZSTD_countTrailingZeros()

MEM_STATIC unsigned ZSTD_countTrailingZeros ( size_t val)

Counts the number of trailing zeros of a size_t. Most compilers should support CTZ as a builtin. A backup implementation is provided if the builtin isn't supported, but it may not be terribly efficient.

◆ ZSTD_cpuSupportsBmi2()

MEM_STATIC int ZSTD_cpuSupportsBmi2 ( void )
Returns
true iff the CPU supports dynamic BMI2 dispatch.

◆ ZSTD_customCalloc()

void * ZSTD_customCalloc ( size_t size,
ZSTD_customMem customMem )

◆ ZSTD_customFree()

void ZSTD_customFree ( void * ptr,
ZSTD_customMem customMem )

◆ ZSTD_customMalloc()

void * ZSTD_customMalloc ( size_t size,
ZSTD_customMem customMem )

◆ ZSTD_decodeSeqHeaders()

size_t ZSTD_decodeSeqHeaders ( ZSTD_DCtx * dctx,
int * nbSeqPtr,
const void * src,
size_t srcSize )

ZSTD_decodeSeqHeaders() : decode sequence header from src

◆ ZSTD_getcBlockSize()

size_t ZSTD_getcBlockSize ( const void * src,
size_t srcSize,
blockProperties_t * bpPtr )

ZSTD_getcBlockSize() : Provides the size of compressed block from block header src

◆ ZSTD_getSeqStore()

const seqStore_t * ZSTD_getSeqStore ( const ZSTD_CCtx * ctx)

◆ ZSTD_getSequenceLength()

MEM_STATIC ZSTD_sequenceLength ZSTD_getSequenceLength ( seqStore_t const * seqStore,
seqDef const * seq )

Returns the ZSTD_sequenceLength for the given sequences. It handles the decoding of long sequences indicated by longLengthPos and longLengthType, and adds MINMATCH back to matchLength.

◆ ZSTD_highbit32()

MEM_STATIC U32 ZSTD_highbit32 ( U32 val)

◆ ZSTD_invalidateRepCodes()

void ZSTD_invalidateRepCodes ( ZSTD_CCtx * cctx)

◆ ZSTD_limitCopy()

MEM_STATIC size_t ZSTD_limitCopy ( void * dst,
size_t dstCapacity,
const void * src,
size_t srcSize )

◆ ZSTD_seqToCodes()

void ZSTD_seqToCodes ( const seqStore_t * seqStorePtr)

◆ ZSTD_wildcopy()

MEM_STATIC FORCE_INLINE_ATTR void ZSTD_wildcopy ( void * dst,
const void * src,
ptrdiff_t length,
ZSTD_overlap_e const ovtype )

ZSTD_wildcopy() : Custom version of ZSTD_memcpy(), can over read/write up to WILDCOPY_OVERLENGTH bytes (if length==0)

Parameters
ovtypecontrols the overlap detection
  • ZSTD_no_overlap: The source and destination are guaranteed to be at least WILDCOPY_VECLEN bytes apart.
  • ZSTD_overlap_src_before_dst: The src and dst may overlap, but they MUST be at least 8 bytes apart. The src buffer must be before the dst buffer.