2017-09-01 18:28:35 -07:00
/*
2022-12-20 12:49:47 -05:00
* Copyright ( c ) Meta Platforms , Inc . and affiliates .
2017-09-01 18:28:35 -07:00
* All rights reserved .
*
* This source code is licensed under both the BSD - style license ( found in the
* LICENSE file in the root directory of this source tree ) and the GPLv2 ( found
* in the COPYING file in the root directory of this source tree ) .
2017-09-08 00:09:23 -07:00
* You may select , at your option , one of the above - listed licenses .
2017-09-01 18:28:35 -07:00
*/
# ifndef ZSTD_LAZY_H
# define ZSTD_LAZY_H
# if defined (__cplusplus)
extern " C " {
# endif
2017-12-12 16:51:00 -08:00
# include "zstd_compress_internal.h"
2017-11-07 16:15:23 -08:00
2020-08-18 15:20:12 -04:00
/**
* Dedicated Dictionary Search Structure bucket log . In the
* ZSTD_dedicatedDictSearch mode , the hashTable has
* 2 * * ZSTD_LAZY_DDSS_BUCKET_LOG entries in each bucket , rather than just
* one .
*/
# define ZSTD_LAZY_DDSS_BUCKET_LOG 2
2023-01-19 16:27:24 -08:00
# define ZSTD_ROW_HASH_TAG_BITS 8 /* nb bits to use for the tag */
2023-04-19 15:38:04 -04:00
# if !defined(ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR) \
| | ! defined ( ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR ) \
| | ! defined ( ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR ) \
| | ! defined ( ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR )
2018-08-23 12:08:03 -07:00
U32 ZSTD_insertAndFindFirstIndex ( ZSTD_matchState_t * ms , const BYTE * ip ) ;
2020-11-02 17:52:29 -08:00
void ZSTD_row_update ( ZSTD_matchState_t * const ms , const BYTE * ip ) ;
2017-09-01 18:28:35 -07:00
2020-06-11 22:48:48 -07:00
void ZSTD_dedicatedDictSearch_lazy_loadDictionary ( ZSTD_matchState_t * ms , const BYTE * const ip ) ;
2020-06-11 18:27:07 -07:00
2019-04-12 14:18:11 -04:00
void ZSTD_preserveUnsortedMark ( U32 * const table , U32 const size , U32 const reducerValue ) ; /*! used in ZSTD_reduceIndex(). preemptively increase value of ZSTD_DUBT_UNSORTED_MARK */
2023-04-19 15:38:04 -04:00
# endif
2017-09-06 15:56:32 -07:00
2023-04-19 15:38:04 -04:00
# ifndef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR
2017-12-12 16:51:00 -08:00
size_t ZSTD_compressBlock_greedy (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_row (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_dictMatchState (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_dictMatchState_row (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_dedicatedDictSearch (
2018-05-16 02:30:20 -04:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_dedicatedDictSearch_row (
2018-05-16 02:30:20 -04:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_extDict (
2018-05-16 02:30:20 -04:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_greedy_extDict_row (
2018-05-16 02:30:20 -04:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_GREEDY ZSTD_compressBlock_greedy
# define ZSTD_COMPRESSBLOCK_GREEDY_ROW ZSTD_compressBlock_greedy_row
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE ZSTD_compressBlock_greedy_dictMatchState
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE_ROW ZSTD_compressBlock_greedy_dictMatchState_row
# define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH ZSTD_compressBlock_greedy_dedicatedDictSearch
# define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH_ROW ZSTD_compressBlock_greedy_dedicatedDictSearch_row
# define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT ZSTD_compressBlock_greedy_extDict
# define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT_ROW ZSTD_compressBlock_greedy_extDict_row
2023-04-21 11:32:41 -04:00
# else
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_GREEDY NULL
# define ZSTD_COMPRESSBLOCK_GREEDY_ROW NULL
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE NULL
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE_ROW NULL
# define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH NULL
# define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH_ROW NULL
# define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT NULL
# define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT_ROW NULL
2023-04-19 15:38:04 -04:00
# endif
2023-04-24 10:40:52 -04:00
# ifndef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR
size_t ZSTD_compressBlock_lazy (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy_row (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy_dictMatchState (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy_dictMatchState_row (
2020-08-11 18:48:22 -04:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
size_t ZSTD_compressBlock_lazy_dedicatedDictSearch (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy_dedicatedDictSearch_row (
2020-08-11 18:48:22 -04:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy_extDict (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy_extDict_row (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY ZSTD_compressBlock_lazy
# define ZSTD_COMPRESSBLOCK_LAZY_ROW ZSTD_compressBlock_lazy_row
# define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE ZSTD_compressBlock_lazy_dictMatchState
# define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE_ROW ZSTD_compressBlock_lazy_dictMatchState_row
# define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH ZSTD_compressBlock_lazy_dedicatedDictSearch
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH_ROW ZSTD_compressBlock_lazy_dedicatedDictSearch_row
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT ZSTD_compressBlock_lazy_extDict
# define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT_ROW ZSTD_compressBlock_lazy_extDict_row
2023-04-21 11:32:41 -04:00
# else
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY NULL
# define ZSTD_COMPRESSBLOCK_LAZY_ROW NULL
# define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE NULL
# define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE_ROW NULL
# define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH NULL
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH_ROW NULL
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT NULL
# define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT_ROW NULL
2023-04-19 15:38:04 -04:00
# endif
2023-04-24 10:40:52 -04:00
# ifndef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR
size_t ZSTD_compressBlock_lazy2 (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy2_row (
2017-12-12 16:51:00 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy2_dictMatchState (
2017-12-12 16:51:00 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy2_dictMatchState_row (
2017-12-12 16:51:00 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy2_dedicatedDictSearch (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_lazy2_dedicatedDictSearch_row (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
size_t ZSTD_compressBlock_lazy2_extDict (
2020-11-02 17:52:29 -08:00
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
size_t ZSTD_compressBlock_lazy2_extDict_row (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY2 ZSTD_compressBlock_lazy2
# define ZSTD_COMPRESSBLOCK_LAZY2_ROW ZSTD_compressBlock_lazy2_row
# define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE ZSTD_compressBlock_lazy2_dictMatchState
# define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE_ROW ZSTD_compressBlock_lazy2_dictMatchState_row
# define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH ZSTD_compressBlock_lazy2_dedicatedDictSearch
# define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH_ROW ZSTD_compressBlock_lazy2_dedicatedDictSearch_row
# define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT ZSTD_compressBlock_lazy2_extDict
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT_ROW ZSTD_compressBlock_lazy2_extDict_row
# else
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY2 NULL
# define ZSTD_COMPRESSBLOCK_LAZY2_ROW NULL
# define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE NULL
# define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE_ROW NULL
# define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH NULL
# define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH_ROW NULL
# define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT NULL
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT_ROW NULL
2023-04-19 15:38:04 -04:00
# endif
2023-04-24 10:40:52 -04:00
2023-04-19 15:38:04 -04:00
# ifndef ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR
2023-04-24 10:40:52 -04:00
size_t ZSTD_compressBlock_btlazy2 (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
size_t ZSTD_compressBlock_btlazy2_dictMatchState (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
void const * src , size_t srcSize ) ;
2017-12-12 16:51:00 -08:00
size_t ZSTD_compressBlock_btlazy2_extDict (
ZSTD_matchState_t * ms , seqStore_t * seqStore , U32 rep [ ZSTD_REP_NUM ] ,
2018-08-23 11:53:34 -07:00
void const * src , size_t srcSize ) ;
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_BTLAZY2 ZSTD_compressBlock_btlazy2
# define ZSTD_COMPRESSBLOCK_BTLAZY2_DICTMATCHSTATE ZSTD_compressBlock_btlazy2_dictMatchState
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_BTLAZY2_EXTDICT ZSTD_compressBlock_btlazy2_extDict
# else
2023-04-24 10:40:52 -04:00
# define ZSTD_COMPRESSBLOCK_BTLAZY2 NULL
# define ZSTD_COMPRESSBLOCK_BTLAZY2_DICTMATCHSTATE NULL
2023-04-21 11:32:41 -04:00
# define ZSTD_COMPRESSBLOCK_BTLAZY2_EXTDICT NULL
2023-04-19 15:38:04 -04:00
# endif
2023-01-19 16:27:24 -08:00
2017-09-01 18:28:35 -07:00
# if defined (__cplusplus)
}
# endif
# endif /* ZSTD_LAZY_H */