You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
/* Lzma2Dec.h -- LZMA2 Decoder |
|
2013-01-18 : Igor Pavlov : Public domain */ |
|
|
|
#ifndef __LZMA2_DEC_H |
|
#define __LZMA2_DEC_H |
|
|
|
#include "LzmaDec.h" |
|
|
|
EXTERN_C_BEGIN |
|
|
|
/* ---------- State Interface ---------- */ |
|
|
|
typedef struct |
|
{ |
|
CLzmaDec decoder; |
|
UInt32 packSize; |
|
UInt32 unpackSize; |
|
int state; |
|
Byte control; |
|
Bool needInitDic; |
|
Bool needInitState; |
|
Bool needInitProp; |
|
} CLzma2Dec; |
|
|
|
#define Lzma2Dec_Construct(p) LzmaDec_Construct(&(p)->decoder) |
|
#define Lzma2Dec_FreeProbs(p, alloc) LzmaDec_FreeProbs(&(p)->decoder, alloc); |
|
#define Lzma2Dec_Free(p, alloc) LzmaDec_Free(&(p)->decoder, alloc); |
|
|
|
SRes Lzma2Dec_AllocateProbs(CLzma2Dec *p, Byte prop, ISzAlloc *alloc); |
|
SRes Lzma2Dec_Allocate(CLzma2Dec *p, Byte prop, ISzAlloc *alloc); |
|
void Lzma2Dec_Init(CLzma2Dec *p); |
|
|
|
|
|
/* |
|
finishMode: |
|
It has meaning only if the decoding reaches output limit (*destLen or dicLimit). |
|
LZMA_FINISH_ANY - use smallest number of input bytes |
|
LZMA_FINISH_END - read EndOfStream marker after decoding |
|
|
|
Returns: |
|
SZ_OK |
|
status: |
|
LZMA_STATUS_FINISHED_WITH_MARK |
|
LZMA_STATUS_NOT_FINISHED |
|
LZMA_STATUS_NEEDS_MORE_INPUT |
|
SZ_ERROR_DATA - Data error |
|
*/ |
|
|
|
SRes Lzma2Dec_DecodeToDic(CLzma2Dec *p, SizeT dicLimit, |
|
const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); |
|
|
|
SRes Lzma2Dec_DecodeToBuf(CLzma2Dec *p, Byte *dest, SizeT *destLen, |
|
const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); |
|
|
|
|
|
/* ---------- One Call Interface ---------- */ |
|
|
|
/* |
|
finishMode: |
|
It has meaning only if the decoding reaches output limit (*destLen). |
|
LZMA_FINISH_ANY - use smallest number of input bytes |
|
LZMA_FINISH_END - read EndOfStream marker after decoding |
|
|
|
Returns: |
|
SZ_OK |
|
status: |
|
LZMA_STATUS_FINISHED_WITH_MARK |
|
LZMA_STATUS_NOT_FINISHED |
|
SZ_ERROR_DATA - Data error |
|
SZ_ERROR_MEM - Memory allocation error |
|
SZ_ERROR_UNSUPPORTED - Unsupported properties |
|
SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). |
|
*/ |
|
|
|
SRes Lzma2Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, |
|
Byte prop, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAlloc *alloc); |
|
|
|
EXTERN_C_END |
|
|
|
#endif
|
|
|