xref: /aosp_15_r20/external/zstd/lib/compress/zstd_opt.h (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
1*01826a49SYabin Cui /*
2*01826a49SYabin Cui  * Copyright (c) Meta Platforms, Inc. and affiliates.
3*01826a49SYabin Cui  * All rights reserved.
4*01826a49SYabin Cui  *
5*01826a49SYabin Cui  * This source code is licensed under both the BSD-style license (found in the
6*01826a49SYabin Cui  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7*01826a49SYabin Cui  * in the COPYING file in the root directory of this source tree).
8*01826a49SYabin Cui  * You may select, at your option, one of the above-listed licenses.
9*01826a49SYabin Cui  */
10*01826a49SYabin Cui 
11*01826a49SYabin Cui #ifndef ZSTD_OPT_H
12*01826a49SYabin Cui #define ZSTD_OPT_H
13*01826a49SYabin Cui 
14*01826a49SYabin Cui #if defined (__cplusplus)
15*01826a49SYabin Cui extern "C" {
16*01826a49SYabin Cui #endif
17*01826a49SYabin Cui 
18*01826a49SYabin Cui #include "zstd_compress_internal.h"
19*01826a49SYabin Cui 
20*01826a49SYabin Cui #if !defined(ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR) \
21*01826a49SYabin Cui  || !defined(ZSTD_EXCLUDE_BTOPT_BLOCK_COMPRESSOR) \
22*01826a49SYabin Cui  || !defined(ZSTD_EXCLUDE_BTULTRA_BLOCK_COMPRESSOR)
23*01826a49SYabin Cui /* used in ZSTD_loadDictionaryContent() */
24*01826a49SYabin Cui void ZSTD_updateTree(ZSTD_matchState_t* ms, const BYTE* ip, const BYTE* iend);
25*01826a49SYabin Cui #endif
26*01826a49SYabin Cui 
27*01826a49SYabin Cui #ifndef ZSTD_EXCLUDE_BTOPT_BLOCK_COMPRESSOR
28*01826a49SYabin Cui size_t ZSTD_compressBlock_btopt(
29*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
30*01826a49SYabin Cui         void const* src, size_t srcSize);
31*01826a49SYabin Cui size_t ZSTD_compressBlock_btopt_dictMatchState(
32*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
33*01826a49SYabin Cui         void const* src, size_t srcSize);
34*01826a49SYabin Cui size_t ZSTD_compressBlock_btopt_extDict(
35*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
36*01826a49SYabin Cui         void const* src, size_t srcSize);
37*01826a49SYabin Cui 
38*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTOPT ZSTD_compressBlock_btopt
39*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTOPT_DICTMATCHSTATE ZSTD_compressBlock_btopt_dictMatchState
40*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTOPT_EXTDICT ZSTD_compressBlock_btopt_extDict
41*01826a49SYabin Cui #else
42*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTOPT NULL
43*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTOPT_DICTMATCHSTATE NULL
44*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTOPT_EXTDICT NULL
45*01826a49SYabin Cui #endif
46*01826a49SYabin Cui 
47*01826a49SYabin Cui #ifndef ZSTD_EXCLUDE_BTULTRA_BLOCK_COMPRESSOR
48*01826a49SYabin Cui size_t ZSTD_compressBlock_btultra(
49*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
50*01826a49SYabin Cui         void const* src, size_t srcSize);
51*01826a49SYabin Cui size_t ZSTD_compressBlock_btultra_dictMatchState(
52*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
53*01826a49SYabin Cui         void const* src, size_t srcSize);
54*01826a49SYabin Cui size_t ZSTD_compressBlock_btultra_extDict(
55*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
56*01826a49SYabin Cui         void const* src, size_t srcSize);
57*01826a49SYabin Cui 
58*01826a49SYabin Cui         /* note : no btultra2 variant for extDict nor dictMatchState,
59*01826a49SYabin Cui          * because btultra2 is not meant to work with dictionaries
60*01826a49SYabin Cui          * and is only specific for the first block (no prefix) */
61*01826a49SYabin Cui size_t ZSTD_compressBlock_btultra2(
62*01826a49SYabin Cui         ZSTD_matchState_t* ms, seqStore_t* seqStore, U32 rep[ZSTD_REP_NUM],
63*01826a49SYabin Cui         void const* src, size_t srcSize);
64*01826a49SYabin Cui 
65*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA ZSTD_compressBlock_btultra
66*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA_DICTMATCHSTATE ZSTD_compressBlock_btultra_dictMatchState
67*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA_EXTDICT ZSTD_compressBlock_btultra_extDict
68*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA2 ZSTD_compressBlock_btultra2
69*01826a49SYabin Cui #else
70*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA NULL
71*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA_DICTMATCHSTATE NULL
72*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA_EXTDICT NULL
73*01826a49SYabin Cui #define ZSTD_COMPRESSBLOCK_BTULTRA2 NULL
74*01826a49SYabin Cui #endif
75*01826a49SYabin Cui 
76*01826a49SYabin Cui #if defined (__cplusplus)
77*01826a49SYabin Cui }
78*01826a49SYabin Cui #endif
79*01826a49SYabin Cui 
80*01826a49SYabin Cui #endif /* ZSTD_OPT_H */
81