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 lzma_allocator *allocator, 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, 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, lzma_allocator *allocator, 44 const void *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