rpmio/LzmaDecode.c File Reference

#include "LzmaDecode.h"

Go to the source code of this file.

Defines

#define Byte   unsigned char
#define kNumTopBits   24
#define kTopValue   ((UInt32)1 << kNumTopBits)
#define kNumBitModelTotalBits   11
#define kBitModelTotal   (1 << kNumBitModelTotalBits)
#define kNumMoveBits   5
#define RC_READ_BYTE   (*Buffer++)
#define RC_INIT2
#define RC_TEST
#define RC_INIT   Buffer = BufferLim = 0; RC_INIT2
#define RC_NORMALIZE   if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
#define IfBit0(p)   RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
#define UpdateBit0(p)   Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
#define UpdateBit1(p)   Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
#define RC_GET_BIT2(p, mi, A0, A1)
#define RC_GET_BIT(p, mi)   RC_GET_BIT2(p, mi, ; , ;)
#define RangeDecoderBitTreeDecode(probs, numLevels, res)
#define kNumPosBitsMax   4
#define kNumPosStatesMax   (1 << kNumPosBitsMax)
#define kLenNumLowBits   3
#define kLenNumLowSymbols   (1 << kLenNumLowBits)
#define kLenNumMidBits   3
#define kLenNumMidSymbols   (1 << kLenNumMidBits)
#define kLenNumHighBits   8
#define kLenNumHighSymbols   (1 << kLenNumHighBits)
#define LenChoice   0
#define LenChoice2   (LenChoice + 1)
#define LenLow   (LenChoice2 + 1)
#define LenMid   (LenLow + (kNumPosStatesMax << kLenNumLowBits))
#define LenHigh   (LenMid + (kNumPosStatesMax << kLenNumMidBits))
#define kNumLenProbs   (LenHigh + kLenNumHighSymbols)
#define kNumStates   12
#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 IsMatch   0
#define IsRep   (IsMatch + (kNumStates << kNumPosBitsMax))
#define IsRepG0   (IsRep + kNumStates)
#define IsRepG1   (IsRepG0 + kNumStates)
#define IsRepG2   (IsRepG1 + kNumStates)
#define IsRep0Long   (IsRepG2 + kNumStates)
#define PosSlot   (IsRep0Long + (kNumStates << kNumPosBitsMax))
#define SpecPos   (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
#define Align   (SpecPos + kNumFullDistances - kEndPosModelIndex)
#define LenCoder   (Align + kAlignTableSize)
#define RepLenCoder   (LenCoder + kNumLenProbs)
#define Literal   (RepLenCoder + kNumLenProbs)
#define kLzmaStreamWasFinishedId   (-1)

Functions

int LzmaDecodeProperties (CLzmaProperties *propsRes, const unsigned char *propsData, int size)
int LzmaDecode (CLzmaDecoderState *vs, ILzmaInCallback *InCallback, unsigned char *outStream, unsigned int outSize, unsigned int *outSizeProcessed)


Define Documentation

#define Align   (SpecPos + kNumFullDistances - kEndPosModelIndex)

Definition at line 115 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define Byte   unsigned char

Definition at line 25 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IfBit0 (  )     RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)

Definition at line 58 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IsMatch   0

Definition at line 107 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IsRep   (IsMatch + (kNumStates << kNumPosBitsMax))

Definition at line 108 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IsRep0Long   (IsRepG2 + kNumStates)

Definition at line 112 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IsRepG0   (IsRep + kNumStates)

Definition at line 109 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IsRepG1   (IsRepG0 + kNumStates)

Definition at line 110 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define IsRepG2   (IsRepG1 + kNumStates)

Definition at line 111 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kAlignTableSize   (1 << kNumAlignBits)

Definition at line 103 of file LzmaDecode.c.

#define kBitModelTotal   (1 << kNumBitModelTotalBits)

Definition at line 32 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kEndPosModelIndex   14

Definition at line 96 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kLenNumHighBits   8

Definition at line 81 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kLenNumHighSymbols   (1 << kLenNumHighBits)

Definition at line 82 of file LzmaDecode.c.

#define kLenNumLowBits   3

Definition at line 77 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kLenNumLowSymbols   (1 << kLenNumLowBits)

Definition at line 78 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kLenNumMidBits   3

Definition at line 79 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kLenNumMidSymbols   (1 << kLenNumMidBits)

Definition at line 80 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kLzmaStreamWasFinishedId   (-1)

Definition at line 157 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kMatchMinLen   2

Definition at line 105 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kNumAlignBits   4

Definition at line 102 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kNumBitModelTotalBits   11

Definition at line 31 of file LzmaDecode.c.

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

Definition at line 97 of file LzmaDecode.c.

#define kNumLenProbs   (LenHigh + kLenNumHighSymbols)

Definition at line 89 of file LzmaDecode.c.

#define kNumLenToPosStates   4

Definition at line 100 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kNumLitStates   7

Definition at line 93 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kNumMoveBits   5

Definition at line 33 of file LzmaDecode.c.

#define kNumPosBitsMax   4

Definition at line 74 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kNumPosSlotBits   6

Definition at line 99 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define kNumPosStatesMax   (1 << kNumPosBitsMax)

Definition at line 75 of file LzmaDecode.c.

#define kNumStates   12

Definition at line 92 of file LzmaDecode.c.

#define kNumTopBits   24

Definition at line 28 of file LzmaDecode.c.

#define kStartPosModelIndex   4

Definition at line 95 of file LzmaDecode.c.

Referenced by LzmaDecode().

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

Definition at line 29 of file LzmaDecode.c.

#define LenChoice   0

Definition at line 84 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define LenChoice2   (LenChoice + 1)

Definition at line 85 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define LenCoder   (Align + kAlignTableSize)

Definition at line 116 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define LenHigh   (LenMid + (kNumPosStatesMax << kLenNumMidBits))

Definition at line 88 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define LenLow   (LenChoice2 + 1)

Definition at line 86 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define LenMid   (LenLow + (kNumPosStatesMax << kLenNumLowBits))

Definition at line 87 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define Literal   (RepLenCoder + kNumLenProbs)

Definition at line 118 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define PosSlot   (IsRep0Long + (kNumStates << kNumPosBitsMax))

Definition at line 113 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define RangeDecoderBitTreeDecode ( probs,
numLevels,
res   ) 

Value:

{ int i = numLevels; res = 1; \
  do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
  res -= (1 << numLevels); }

Definition at line 68 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define RC_GET_BIT ( p,
mi   )     RC_GET_BIT2(p, mi, ; , ;)

Definition at line 66 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define RC_GET_BIT2 ( p,
mi,
A0,
A1   ) 

Value:

IfBit0(p) \
  { UpdateBit0(p); mi <<= 1; A0; } else \
  { UpdateBit1(p); mi = (mi + mi) + 1; A1; }

Definition at line 62 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define RC_INIT   Buffer = BufferLim = 0; RC_INIT2

Definition at line 46 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define RC_INIT2

Value:

Code = 0; Range = 0xFFFFFFFF; \
  { int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}

Definition at line 37 of file LzmaDecode.c.

#define RC_NORMALIZE   if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }

Definition at line 56 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define RC_READ_BYTE   (*Buffer++)

Definition at line 35 of file LzmaDecode.c.

#define RC_TEST

Value:

{ if (Buffer == BufferLim) \
  { SizeT size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
  BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}

Definition at line 42 of file LzmaDecode.c.

#define RepLenCoder   (LenCoder + kNumLenProbs)

Definition at line 117 of file LzmaDecode.c.

Referenced by LzmaDecode().

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

Definition at line 114 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define UpdateBit0 (  )     Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;

Definition at line 59 of file LzmaDecode.c.

Referenced by LzmaDecode().

#define UpdateBit1 (  )     Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;

Definition at line 60 of file LzmaDecode.c.

Referenced by LzmaDecode().


Function Documentation

int LzmaDecode ( CLzmaDecoderState vs,
ILzmaInCallback InCallback,
unsigned char *  outStream,
unsigned int  outSize,
unsigned int *  outSizeProcessed 
)

Definition at line 159 of file LzmaDecode.c.

References _LZMA_OUT_READ, Align, _CLzmaDecoderState::Buffer, _CLzmaDecoderState::BufferLim, Byte, _CLzmaDecoderState::Code, CProb, _CLzmaDecoderState::Dictionary, _CLzmaDecoderState::DictionaryPos, _CLzmaProperties::DictionarySize, _CLzmaDecoderState::DistanceLimit, _CLzmaDecoderState::GlobalPos, IfBit0, IsMatch, IsRep, IsRep0Long, IsRepG0, IsRepG1, IsRepG2, kBitModelTotal, kEndPosModelIndex, kLenNumHighBits, kLenNumLowBits, kLenNumLowSymbols, kLenNumMidBits, kLenNumMidSymbols, kLzmaNeedInitId, kLzmaStreamWasFinishedId, kMatchMinLen, kNumAlignBits, kNumLenToPosStates, kNumLitStates, kNumPosBitsMax, kNumPosSlotBits, kStartPosModelIndex, _CLzmaProperties::lc, LenChoice, LenChoice2, LenCoder, LenHigh, LenLow, LenMid, Literal, _CLzmaProperties::lp, LZMA_LIT_SIZE, LZMA_RESULT_DATA_ERROR, LZMA_RESULT_OK, _CLzmaProperties::pb, PosSlot, _CLzmaDecoderState::Probs, _CLzmaDecoderState::Properties, _CLzmaDecoderState::Range, RangeDecoderBitTreeDecode, RC_GET_BIT, RC_GET_BIT2, RC_INIT, RC_NORMALIZE, _CLzmaDecoderState::RemainLen, RepLenCoder, _CLzmaDecoderState::Reps, SizeT, SpecPos, _CLzmaDecoderState::State, _CLzmaDecoderState::TempDictionary, UInt32, UpdateBit0, and UpdateBit1.

Referenced by lzdRead().

int LzmaDecodeProperties ( CLzmaProperties propsRes,
const unsigned char *  propsData,
int  size 
)

Definition at line 124 of file LzmaDecode.c.

References _CLzmaProperties::DictionarySize, _CLzmaProperties::lc, _CLzmaProperties::lp, LZMA_PROPERTIES_SIZE, LZMA_RESULT_DATA_ERROR, LZMA_RESULT_OK, _CLzmaProperties::pb, and UInt32.

Referenced by lzdReadOpen().


Generated on Mon Mar 5 14:30:19 2007 for rpm by  doxygen 1.5.1