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