1 // SPDX-License-Identifier: 0BSD 2 3 /////////////////////////////////////////////////////////////////////////////// 4 // 5 /// \file lzma_decoder.h 6 /// \brief LZMA decoder API 7 /// 8 // Authors: Igor Pavlov 9 // Lasse Collin 10 // 11 /////////////////////////////////////////////////////////////////////////////// 12 13 #ifndef LZMA_LZMA_DECODER_H 14 #define LZMA_LZMA_DECODER_H 15 16 #include "common.h" 17 18 19 /// Allocates and initializes LZMA decoder 20 extern lzma_ret lzma_lzma_decoder_init(lzma_next_coder *next, 21 const lzma_allocator *allocator, 22 const lzma_filter_info *filters); 23 24 extern uint64_t lzma_lzma_decoder_memusage(const void *options); 25 26 extern lzma_ret lzma_lzma_props_decode( 27 void **options, const lzma_allocator *allocator, 28 const uint8_t *props, size_t props_size); 29 30 31 /// \brief Decodes the LZMA Properties byte (lc/lp/pb) 32 /// 33 /// \return true if error occurred, false on success 34 /// 35 extern bool lzma_lzma_lclppb_decode( 36 lzma_options_lzma *options, uint8_t byte); 37 38 39 #ifdef LZMA_LZ_DECODER_H 40 /// Allocate and setup function pointers only. This is used by LZMA1 and 41 /// LZMA2 decoders. 42 extern lzma_ret lzma_lzma_decoder_create( 43 lzma_lz_decoder *lz, const lzma_allocator *allocator, 44 const lzma_options_lzma *opt, lzma_lz_options *lz_options); 45 46 /// Gets memory usage without validating lc/lp/pb. This is used by LZMA2 47 /// decoder, because raw LZMA2 decoding doesn't need lc/lp/pb. 48 extern uint64_t lzma_lzma_decoder_memusage_nocheck(const void *options); 49 50 #endif 51 52 #endif 53