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