1/* Lzma2Dec.h -- LZMA2 Decoder
22009-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
10extern "C" {
11#endif
12
13/* ---------- State Interface ---------- */
14
15typedef 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
31SRes Lzma2Dec_AllocateProbs(CLzma2Dec *p, Byte prop, ISzAlloc *alloc);
32SRes Lzma2Dec_Allocate(CLzma2Dec *p, Byte prop, ISzAlloc *alloc);
33void Lzma2Dec_Init(CLzma2Dec *p);
34
35
36/*
37finishMode:
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
42Returns:
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
51SRes Lzma2Dec_DecodeToDic(CLzma2Dec *p, SizeT dicLimit,
52    const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status);
53
54SRes 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/*
61finishMode:
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
66Returns:
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
77SRes 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