Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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.