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