1 /* Lzma2Dec.h -- LZMA2 Decoder 2 2015-05-13 : Igor Pavlov : Public domain */ 3 4 #ifndef __LZMA2_DEC_H 5 #define __LZMA2_DEC_H 6 7 #include "LzmaDec.h" 8 9 EXTERN_C_BEGIN 10 11 /* ---------- State Interface ---------- */ 12 13 typedef struct 14 { 15 CLzmaDec decoder; 16 UInt32 packSize; 17 UInt32 unpackSize; 18 unsigned state; 19 Byte control; 20 Bool needInitDic; 21 Bool needInitState; 22 Bool needInitProp; 23 } CLzma2Dec; 24 25 #define Lzma2Dec_Construct(p) LzmaDec_Construct(&(p)->decoder) 26 #define Lzma2Dec_FreeProbs(p, alloc) LzmaDec_FreeProbs(&(p)->decoder, alloc); 27 #define Lzma2Dec_Free(p, alloc) LzmaDec_Free(&(p)->decoder, alloc); 28 29 SRes Lzma2Dec_AllocateProbs(CLzma2Dec *p, Byte prop, ISzAlloc *alloc); 30 SRes Lzma2Dec_Allocate(CLzma2Dec *p, Byte prop, ISzAlloc *alloc); 31 void Lzma2Dec_Init(CLzma2Dec *p); 32 33 34 /* 35 finishMode: 36 It has meaning only if the decoding reaches output limit (*destLen or dicLimit). 37 LZMA_FINISH_ANY - use smallest number of input bytes 38 LZMA_FINISH_END - read EndOfStream marker after decoding 39 40 Returns: 41 SZ_OK 42 status: 43 LZMA_STATUS_FINISHED_WITH_MARK 44 LZMA_STATUS_NOT_FINISHED 45 LZMA_STATUS_NEEDS_MORE_INPUT 46 SZ_ERROR_DATA - Data error 47 */ 48 49 SRes Lzma2Dec_DecodeToDic(CLzma2Dec *p, SizeT dicLimit, 50 const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); 51 52 SRes Lzma2Dec_DecodeToBuf(CLzma2Dec *p, Byte *dest, SizeT *destLen, 53 const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); 54 55 56 /* ---------- One Call Interface ---------- */ 57 58 /* 59 finishMode: 60 It has meaning only if the decoding reaches output limit (*destLen). 61 LZMA_FINISH_ANY - use smallest number of input bytes 62 LZMA_FINISH_END - read EndOfStream marker after decoding 63 64 Returns: 65 SZ_OK 66 status: 67 LZMA_STATUS_FINISHED_WITH_MARK 68 LZMA_STATUS_NOT_FINISHED 69 SZ_ERROR_DATA - Data error 70 SZ_ERROR_MEM - Memory allocation error 71 SZ_ERROR_UNSUPPORTED - Unsupported properties 72 SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). 73 */ 74 75 SRes Lzma2Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, 76 Byte prop, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAlloc *alloc); 77 78 EXTERN_C_END 79 80 #endif 81