From 84404cff6efc767dcce0833d4a9eb9c742ad2301 Mon Sep 17 00:00:00 2001 From: Sen Huang Date: Tue, 5 Nov 2019 15:07:07 -0500 Subject: [PATCH] Move decompress symbols into zstd_internal.h, remove dependency --- lib/common/zstd_internal.h | 28 +++++++++++++++++++++++ lib/decompress/zstd_decompress_internal.h | 23 ------------------- lib/dictBuilder/zdict.c | 2 +- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/lib/common/zstd_internal.h b/lib/common/zstd_internal.h index dcdcbdb81..db3ce1fc1 100644 --- a/lib/common/zstd_internal.h +++ b/lib/common/zstd_internal.h @@ -251,6 +251,34 @@ void ZSTD_wildcopy(void* dst, const void* src, ptrdiff_t length, ZSTD_overlap_e /*-******************************************* * Private declarations *********************************************/ +/** + * ZSTD_seqSymbol, ZSTD_entropyDTables_t, ZSTD_loadDEntropy(), and SEQSYMBOL_TABLE_SIZE() + * are used by ZDICT_getDictHeaderSize() and various functions in zstd_decompress.h + */ + + typedef struct { + U16 nextState; + BYTE nbAdditionalBits; + BYTE nbBits; + U32 baseValue; + } ZSTD_seqSymbol; + +#define SEQSYMBOL_TABLE_SIZE(log) (1 + (1 << (log))) + +typedef struct { + ZSTD_seqSymbol LLTable[SEQSYMBOL_TABLE_SIZE(LLFSELog)]; /* Note : Space reserved for FSE Tables */ + ZSTD_seqSymbol OFTable[SEQSYMBOL_TABLE_SIZE(OffFSELog)]; /* is also used as temporary workspace while building hufTable during DDict creation */ + ZSTD_seqSymbol MLTable[SEQSYMBOL_TABLE_SIZE(MLFSELog)]; /* and therefore must be at least HUF_DECOMPRESS_WORKSPACE_SIZE large */ + HUF_DTable hufTable[HUF_DTABLE_SIZE(HufLog)]; /* can accommodate HUF_decompress4X */ + U32 rep[ZSTD_REP_NUM]; +} ZSTD_entropyDTables_t; + +/*! ZSTD_loadDEntropy() : + * dict : must point at beginning of a valid zstd dictionary. + * @return : size of entropy tables read (includes 8-byte magic number and dictionary ID) */ +size_t ZSTD_loadDEntropy(ZSTD_entropyDTables_t* entropy, + const void* const dict, size_t const dictSize); + typedef struct seqDef_s { U32 offset; U16 litLength; diff --git a/lib/decompress/zstd_decompress_internal.h b/lib/decompress/zstd_decompress_internal.h index ccbdfa090..1a71e2364 100644 --- a/lib/decompress/zstd_decompress_internal.h +++ b/lib/decompress/zstd_decompress_internal.h @@ -64,23 +64,6 @@ static const U32 ML_base[MaxML+1] = { U32 tableLog; } ZSTD_seqSymbol_header; - typedef struct { - U16 nextState; - BYTE nbAdditionalBits; - BYTE nbBits; - U32 baseValue; - } ZSTD_seqSymbol; - - #define SEQSYMBOL_TABLE_SIZE(log) (1 + (1 << (log))) - -typedef struct { - ZSTD_seqSymbol LLTable[SEQSYMBOL_TABLE_SIZE(LLFSELog)]; /* Note : Space reserved for FSE Tables */ - ZSTD_seqSymbol OFTable[SEQSYMBOL_TABLE_SIZE(OffFSELog)]; /* is also used as temporary workspace while building hufTable during DDict creation */ - ZSTD_seqSymbol MLTable[SEQSYMBOL_TABLE_SIZE(MLFSELog)]; /* and therefore must be at least HUF_DECOMPRESS_WORKSPACE_SIZE large */ - HUF_DTable hufTable[HUF_DTABLE_SIZE(HufLog)]; /* can accommodate HUF_decompress4X */ - U32 rep[ZSTD_REP_NUM]; -} ZSTD_entropyDTables_t; - typedef enum { ZSTDds_getFrameHeaderSize, ZSTDds_decodeFrameHeader, ZSTDds_decodeBlockHeader, ZSTDds_decompressBlock, ZSTDds_decompressLastBlock, ZSTDds_checkChecksum, @@ -158,12 +141,6 @@ struct ZSTD_DCtx_s * Shared internal functions *********************************************************/ -/*! ZSTD_loadDEntropy() : - * dict : must point at beginning of a valid zstd dictionary. - * @return : size of entropy tables read */ -size_t ZSTD_loadDEntropy(ZSTD_entropyDTables_t* entropy, - const void* const dict, size_t const dictSize); - /*! ZSTD_checkContinuity() : * check if next `dst` follows previous position, where decompression ended. * If yes, do nothing (continue on current segment). diff --git a/lib/dictBuilder/zdict.c b/lib/dictBuilder/zdict.c index 6db57b144..7ea0a2d48 100644 --- a/lib/dictBuilder/zdict.c +++ b/lib/dictBuilder/zdict.c @@ -48,7 +48,6 @@ # define ZDICT_STATIC_LINKING_ONLY #endif #include "zdict.h" -#include "decompress/zstd_decompress_internal.h" /* ZSTD_entropyDTables_t */ /*-************************************* @@ -109,6 +108,7 @@ size_t ZDICT_getDictHeaderSize(const void* dictBuffer, size_t dictSize) if (!dummyEntropyTables) { return 0; } + dummyEntropyTables->hufTable[0] = (HUF_DTable)((HufLog)*0x1000001); headerSize = ZSTD_loadDEntropy(dummyEntropyTables, dictBuffer, dictSize); free(dummyEntropyTables); -- 2.47.2