Home | History | Annotate | Download | only in C
      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