Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
LzmaDec.c File Reference
#include "Precomp.h"
#include <string.h>
#include "LzmaDec.h"

Macros

#define kTopValue   ((UInt32)1 << 24)
 
#define kNumBitModelTotalBits   11
 
#define kBitModelTotal   (1 << kNumBitModelTotalBits)
 
#define RC_INIT_SIZE   5
 
#define kNumMoveBits   5
 
#define NORMALIZE   if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); }
 
#define IF_BIT_0(p)
 
#define UPDATE_0(p)
 
#define UPDATE_1(p)
 
#define GET_BIT2(p, i, A0, A1)
 
#define TREE_GET_BIT(probs, i)
 
#define REV_BIT(p, i, A0, A1)
 
#define REV_BIT_VAR( p, i, m)
 
#define REV_BIT_CONST(p, i, m)
 
#define REV_BIT_LAST(p, i, m)
 
#define TREE_DECODE(probs, limit, i)
 
#define TREE_6_DECODE(probs, i)
 
#define NORMAL_LITER_DEC   TREE_GET_BIT(prob, symbol)
 
#define MATCHED_LITER_DEC
 
#define NORMALIZE_CHECK   if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_INPUT_EOF; range <<= 8; code = (code << 8) | (*buf++); }
 
#define IF_BIT_0_CHECK(p)
 
#define UPDATE_0_CHECK   range = bound;
 
#define UPDATE_1_CHECK   range -= bound; code -= bound;
 
#define GET_BIT2_CHECK(p, i, A0, A1)
 
#define GET_BIT_CHECK(p, i)
 
#define TREE_DECODE_CHECK(probs, limit, i)
 
#define REV_BIT_CHECK(p, i, m)
 
#define kNumPosBitsMax   4
 
#define kNumPosStatesMax   (1 << kNumPosBitsMax)
 
#define kLenNumLowBits   3
 
#define kLenNumLowSymbols   (1 << kLenNumLowBits)
 
#define kLenNumHighBits   8
 
#define kLenNumHighSymbols   (1 << kLenNumHighBits)
 
#define LenLow   0
 
#define LenHigh   (LenLow + 2 * (kNumPosStatesMax << kLenNumLowBits))
 
#define kNumLenProbs   (LenHigh + kLenNumHighSymbols)
 
#define LenChoice   LenLow
 
#define LenChoice2   (LenLow + (1 << kLenNumLowBits))
 
#define kNumStates   12
 
#define kNumStates2   16
 
#define kNumLitStates   7
 
#define kStartPosModelIndex   4
 
#define kEndPosModelIndex   14
 
#define kNumFullDistances   (1 << (kEndPosModelIndex >> 1))
 
#define kNumPosSlotBits   6
 
#define kNumLenToPosStates   4
 
#define kNumAlignBits   4
 
#define kAlignTableSize   (1 << kNumAlignBits)
 
#define kMatchMinLen   2
 
#define kMatchSpecLenStart   (kMatchMinLen + kLenNumLowSymbols * 2 + kLenNumHighSymbols)
 
#define kMatchSpecLen_Error_Data   (1 << 9)
 
#define kMatchSpecLen_Error_Fail   (kMatchSpecLen_Error_Data - 1)
 
#define kStartOffset   1664
 
#define GET_PROBS   p->probs_1664
 
#define SpecPos   (-kStartOffset)
 
#define IsRep0Long   (SpecPos + kNumFullDistances)
 
#define RepLenCoder   (IsRep0Long + (kNumStates2 << kNumPosBitsMax))
 
#define LenCoder   (RepLenCoder + kNumLenProbs)
 
#define IsMatch   (LenCoder + kNumLenProbs)
 
#define Align   (IsMatch + (kNumStates2 << kNumPosBitsMax))
 
#define IsRep   (Align + kAlignTableSize)
 
#define IsRepG0   (IsRep + kNumStates)
 
#define IsRepG1   (IsRepG0 + kNumStates)
 
#define IsRepG2   (IsRepG1 + kNumStates)
 
#define PosSlot   (IsRepG2 + kNumStates)
 
#define Literal   (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
 
#define NUM_BASE_PROBS   (Literal + kStartOffset)
 
#define LZMA_LIT_SIZE   0x300
 
#define LzmaProps_GetNumProbs(p)
 
#define CALC_POS_STATE(processedPos, pbMask)
 
#define COMBINED_PS_STATE   (posState + state)
 
#define GET_LEN_STATE   (posState)
 
#define LZMA_DIC_MIN   (1 << 12)
 
#define LZMA_DECODE_REAL   LzmaDec_DecodeReal_3
 
#define kRange0   0xFFFFFFFF
 
#define kBound0   ((kRange0 >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1))
 
#define kBadRepCode   (kBound0 + (((kRange0 - kBound0) >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1)))
 
#define IS_DUMMY_END_MARKER_POSSIBLE(dummyRes)
 
#define RETURN_NOT_FINISHED_FOR_FINISH
 

Enumerations

enum  ELzmaDummy { DUMMY_INPUT_EOF , DUMMY_LIT , DUMMY_MATCH , DUMMY_REP }
 

Functions

void LzmaDec_InitDicAndState (CLzmaDec *p, BoolInt initDic, BoolInt initState)
 
void LzmaDec_Init (CLzmaDec *p)
 
SRes LzmaDec_DecodeToDic (CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status)
 
SRes LzmaDec_DecodeToBuf (CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status)
 
void LzmaDec_FreeProbs (CLzmaDec *p, ISzAllocPtr alloc)
 
void LzmaDec_Free (CLzmaDec *p, ISzAllocPtr alloc)
 
SRes LzmaProps_Decode (CLzmaProps *p, const Byte *data, unsigned size)
 
SRes LzmaDec_AllocateProbs (CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc)
 
SRes LzmaDec_Allocate (CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc)
 
SRes LzmaDecode (Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAllocPtr alloc)
 

Macro Definition Documentation

◆ Align

#define Align   (IsMatch + (kNumStates2 << kNumPosBitsMax))

◆ CALC_POS_STATE

#define CALC_POS_STATE ( processedPos,
pbMask )
Value:
(((processedPos) & (pbMask)) << 4)

◆ COMBINED_PS_STATE

#define COMBINED_PS_STATE   (posState + state)

◆ GET_BIT2

#define GET_BIT2 ( p,
i,
A0,
A1 )
Value:
IF_BIT_0(p) \
{ UPDATE_0(p) i = (i + i); A0; } else \
{ UPDATE_1(p) i = (i + i) + 1; A1; }
#define IF_BIT_0(p)
Definition LzmaDec.c:24
#define UPDATE_1(p)
Definition LzmaDec.c:26
#define UPDATE_0(p)
Definition LzmaDec.c:25
lzma_index ** i
Definition index.h:629
#define A1
Definition crc64_fast.c:86

◆ GET_BIT2_CHECK

#define GET_BIT2_CHECK ( p,
i,
A0,
A1 )
Value:
{ UPDATE_0_CHECK i = (i + i); A0; } else \
{ UPDATE_1_CHECK i = (i + i) + 1; A1; }
#define IF_BIT_0_CHECK(p)
Definition LzmaDec.c:72
#define UPDATE_0_CHECK
Definition LzmaDec.c:73
#define UPDATE_1_CHECK
Definition LzmaDec.c:74

◆ GET_BIT_CHECK

#define GET_BIT_CHECK ( p,
i )
Value:
GET_BIT2_CHECK(p, i, ; , ;)
#define GET_BIT2_CHECK(p, i, A0, A1)
Definition LzmaDec.c:75

◆ GET_LEN_STATE

#define GET_LEN_STATE   (posState)

◆ GET_PROBS

#define GET_PROBS   p->probs_1664

◆ IF_BIT_0

#define IF_BIT_0 ( p)
Value:
ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound)
#define NORMALIZE
Definition LzmaDec.c:22
#define kNumBitModelTotalBits
Definition LzmaDec.c:14
Definition inftrees.h:24
unsigned int UInt32
Definition bzlib_private.h:45

◆ IF_BIT_0_CHECK

#define IF_BIT_0_CHECK ( p)
Value:
ttt = *(p); NORMALIZE_CHECK bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound)
#define NORMALIZE_CHECK
Definition LzmaDec.c:70

◆ IS_DUMMY_END_MARKER_POSSIBLE

#define IS_DUMMY_END_MARKER_POSSIBLE ( dummyRes)
Value:
((dummyRes) == DUMMY_MATCH)
@ DUMMY_MATCH
Definition LzmaDec.c:708

◆ IsMatch

#define IsMatch   (LenCoder + kNumLenProbs)

◆ IsRep

#define IsRep   (Align + kAlignTableSize)

◆ IsRep0Long

#define IsRep0Long   (SpecPos + kNumFullDistances)

◆ IsRepG0

#define IsRepG0   (IsRep + kNumStates)

◆ IsRepG1

#define IsRepG1   (IsRepG0 + kNumStates)

◆ IsRepG2

#define IsRepG2   (IsRepG1 + kNumStates)

◆ kAlignTableSize

#define kAlignTableSize   (1 << kNumAlignBits)

◆ kBadRepCode

#define kBadRepCode   (kBound0 + (((kRange0 - kBound0) >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1)))

◆ kBitModelTotal

#define kBitModelTotal   (1 << kNumBitModelTotalBits)

◆ kBound0

#define kBound0   ((kRange0 >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1))

◆ kEndPosModelIndex

#define kEndPosModelIndex   14

◆ kLenNumHighBits

#define kLenNumHighBits   8

◆ kLenNumHighSymbols

#define kLenNumHighSymbols   (1 << kLenNumHighBits)

◆ kLenNumLowBits

#define kLenNumLowBits   3

◆ kLenNumLowSymbols

#define kLenNumLowSymbols   (1 << kLenNumLowBits)

◆ kMatchMinLen

#define kMatchMinLen   2

◆ kMatchSpecLen_Error_Data

#define kMatchSpecLen_Error_Data   (1 << 9)

◆ kMatchSpecLen_Error_Fail

#define kMatchSpecLen_Error_Fail   (kMatchSpecLen_Error_Data - 1)

◆ kMatchSpecLenStart

#define kMatchSpecLenStart   (kMatchMinLen + kLenNumLowSymbols * 2 + kLenNumHighSymbols)

◆ kNumAlignBits

#define kNumAlignBits   4

◆ kNumBitModelTotalBits

#define kNumBitModelTotalBits   11

◆ kNumFullDistances

#define kNumFullDistances   (1 << (kEndPosModelIndex >> 1))

◆ kNumLenProbs

#define kNumLenProbs   (LenHigh + kLenNumHighSymbols)

◆ kNumLenToPosStates

#define kNumLenToPosStates   4

◆ kNumLitStates

#define kNumLitStates   7

◆ kNumMoveBits

#define kNumMoveBits   5

◆ kNumPosBitsMax

#define kNumPosBitsMax   4

◆ kNumPosSlotBits

#define kNumPosSlotBits   6

◆ kNumPosStatesMax

#define kNumPosStatesMax   (1 << kNumPosBitsMax)

◆ kNumStates

#define kNumStates   12

◆ kNumStates2

#define kNumStates2   16

◆ kRange0

#define kRange0   0xFFFFFFFF

◆ kStartOffset

#define kStartOffset   1664

◆ kStartPosModelIndex

#define kStartPosModelIndex   4

◆ kTopValue

#define kTopValue   ((UInt32)1 << 24)

◆ LenChoice

#define LenChoice   LenLow

◆ LenChoice2

#define LenChoice2   (LenLow + (1 << kLenNumLowBits))

◆ LenCoder

#define LenCoder   (RepLenCoder + kNumLenProbs)

◆ LenHigh

#define LenHigh   (LenLow + 2 * (kNumPosStatesMax << kLenNumLowBits))

◆ LenLow

#define LenLow   0

◆ Literal

#define Literal   (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))

◆ LZMA_DECODE_REAL

#define LZMA_DECODE_REAL   LzmaDec_DecodeReal_3

◆ LZMA_DIC_MIN

#define LZMA_DIC_MIN   (1 << 12)

◆ LZMA_LIT_SIZE

#define LZMA_LIT_SIZE   0x300

◆ LzmaProps_GetNumProbs

#define LzmaProps_GetNumProbs ( p)
Value:
(NUM_BASE_PROBS + ((UInt32)LZMA_LIT_SIZE << ((p)->lc + (p)->lp)))
#define NUM_BASE_PROBS
Definition LzmaDec.c:151
#define LZMA_LIT_SIZE
Definition LzmaDec.c:162

◆ MATCHED_LITER_DEC

#define MATCHED_LITER_DEC
Value:
matchByte += matchByte; \
bit = offs; \
offs &= matchByte; \
probLit = prob + (offs + bit + symbol); \
GET_BIT2(probLit, symbol, offs ^= bit; , ;)

◆ NORMAL_LITER_DEC

#define NORMAL_LITER_DEC   TREE_GET_BIT(prob, symbol)

◆ NORMALIZE

#define NORMALIZE   if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); }

◆ NORMALIZE_CHECK

#define NORMALIZE_CHECK   if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_INPUT_EOF; range <<= 8; code = (code << 8) | (*buf++); }

◆ NUM_BASE_PROBS

#define NUM_BASE_PROBS   (Literal + kStartOffset)

◆ PosSlot

#define PosSlot   (IsRepG2 + kNumStates)

◆ RC_INIT_SIZE

#define RC_INIT_SIZE   5

◆ RepLenCoder

#define RepLenCoder   (IsRep0Long + (kNumStates2 << kNumPosBitsMax))

◆ RETURN_NOT_FINISHED_FOR_FINISH

#define RETURN_NOT_FINISHED_FOR_FINISH
Value:
return SZ_ERROR_DATA;
#define SZ_ERROR_DATA
Definition 7zTypes.h:29
@ LZMA_STATUS_NOT_FINISHED
Definition LzmaDec.h:110
int __stdcall status(int newvalue)
Definition bzip2dll.c:513

◆ REV_BIT

#define REV_BIT ( p,
i,
A0,
A1 )
Value:
IF_BIT_0(p + i) \
{ UPDATE_0(p + i) A0; } else \
{ UPDATE_1(p + i) A1; }

◆ REV_BIT_CHECK

#define REV_BIT_CHECK ( p,
i,
m )
Value:
{ UPDATE_0_CHECK i += m; m += m; } else \
{ UPDATE_1_CHECK m += m; i += m; }

◆ REV_BIT_CONST

#define REV_BIT_CONST ( p,
i,
m )
Value:
REV_BIT(p, i, i += m; , i += m * 2; )
#define REV_BIT(p, i, A0, A1)
Definition LzmaDec.c:33

◆ REV_BIT_LAST

#define REV_BIT_LAST ( p,
i,
m )
Value:
REV_BIT(p, i, i -= m , ; )

◆ REV_BIT_VAR

#define REV_BIT_VAR ( p,
i,
m )
Value:
REV_BIT(p, i, i += m; m += m, m += m; i += m; )

◆ SpecPos

#define SpecPos   (-kStartOffset)

◆ TREE_6_DECODE

#define TREE_6_DECODE ( probs,
i )
Value:
{ i = 1; \
TREE_GET_BIT(probs, i) \
TREE_GET_BIT(probs, i) \
TREE_GET_BIT(probs, i) \
TREE_GET_BIT(probs, i) \
TREE_GET_BIT(probs, i) \
TREE_GET_BIT(probs, i) \
i -= 0x40; }

◆ TREE_DECODE

#define TREE_DECODE ( probs,
limit,
i )
Value:
{ i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; }
#define TREE_GET_BIT(probs, i)
Definition LzmaDec.c:31
static uint32_t const uint8_t uint32_t uint32_t limit
Definition memcmplen.h:45

◆ TREE_DECODE_CHECK

#define TREE_DECODE_CHECK ( probs,
limit,
i )
Value:
{ i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; }
#define GET_BIT_CHECK(p, i)
Definition LzmaDec.c:78

◆ TREE_GET_BIT

#define TREE_GET_BIT ( probs,
i )
Value:
{ GET_BIT2(probs + i, i, ;, ;); }
#define GET_BIT2(p, i, A0, A1)
Definition LzmaDec.c:27

◆ UPDATE_0

#define UPDATE_0 ( p)
Value:
range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits));
#define kBitModelTotal
Definition LzmaDec.c:15
#define kNumMoveBits
Definition LzmaDec.c:21
UInt16 CLzmaProb
Definition LzmaEnc.c:328

◆ UPDATE_0_CHECK

#define UPDATE_0_CHECK   range = bound;

◆ UPDATE_1

#define UPDATE_1 ( p)
Value:
range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits));

◆ UPDATE_1_CHECK

#define UPDATE_1_CHECK   range -= bound; code -= bound;

Enumeration Type Documentation

◆ ELzmaDummy

enum ELzmaDummy
Enumerator
DUMMY_INPUT_EOF 
DUMMY_LIT 
DUMMY_MATCH 
DUMMY_REP 

Function Documentation

◆ LzmaDec_Allocate()

SRes LzmaDec_Allocate ( CLzmaDec * p,
const Byte * props,
unsigned propsSize,
ISzAllocPtr alloc )

◆ LzmaDec_AllocateProbs()

SRes LzmaDec_AllocateProbs ( CLzmaDec * p,
const Byte * props,
unsigned propsSize,
ISzAllocPtr alloc )

◆ LzmaDec_DecodeToBuf()

SRes LzmaDec_DecodeToBuf ( CLzmaDec * p,
Byte * dest,
SizeT * destLen,
const Byte * src,
SizeT * srcLen,
ELzmaFinishMode finishMode,
ELzmaStatus * status )

◆ LzmaDec_DecodeToDic()

SRes LzmaDec_DecodeToDic ( CLzmaDec * p,
SizeT dicLimit,
const Byte * src,
SizeT * srcLen,
ELzmaFinishMode finishMode,
ELzmaStatus * status )

◆ LzmaDec_Free()

void LzmaDec_Free ( CLzmaDec * p,
ISzAllocPtr alloc )

◆ LzmaDec_FreeProbs()

void LzmaDec_FreeProbs ( CLzmaDec * p,
ISzAllocPtr alloc )

◆ LzmaDec_Init()

void LzmaDec_Init ( CLzmaDec * p)

◆ LzmaDec_InitDicAndState()

void LzmaDec_InitDicAndState ( CLzmaDec * p,
BoolInt initDic,
BoolInt initState )

◆ LzmaDecode()

SRes LzmaDecode ( Byte * dest,
SizeT * destLen,
const Byte * src,
SizeT * srcLen,
const Byte * propData,
unsigned propSize,
ELzmaFinishMode finishMode,
ELzmaStatus * status,
ISzAllocPtr alloc )

◆ LzmaProps_Decode()

SRes LzmaProps_Decode ( CLzmaProps * p,
const Byte * data,
unsigned size )