7#ifndef ZIP7_INC_PPMD7_H
8#define ZIP7_INC_PPMD7_H
14#define PPMD7_MIN_ORDER 2
15#define PPMD7_MAX_ORDER 64
17#define PPMD7_MIN_MEM_SIZE (1 << 11)
18#define PPMD7_MAX_MEM_SIZE (0xFFFFFFFF - 12 * 3)
48#define Ppmd7Context_OneState(p) ((CPpmd_State *)&(p)->Union2)
110#define Ppmd7_WasAllocated(p) ((p)->Base != NULL)
115#define Ppmd7_GetPtr(p, ptr) Ppmd_GetPtr(p, ptr)
116#define Ppmd7_GetContext(p, ptr) Ppmd_GetPtr_Type(p, ptr, CPpmd7_Context)
117#define Ppmd7_GetStats(p, ctx) Ppmd_GetPtr_Type(p, (ctx)->Union4.Stats, CPpmd_State)
123#define PPMD7_HiBitsFlag_3(sym) ((((unsigned)sym + 0xC0) >> (8 - 3)) & (1 << 3))
124#define PPMD7_HiBitsFlag_4(sym) ((((unsigned)sym + 0xC0) >> (8 - 4)) & (1 << 4))
128#define Ppmd7_GetBinSumm(p) \
129 &p->BinSumm[(size_t)(unsigned)Ppmd7Context_OneState(p->MinContext)->Freq - 1] \
130 [ p->PrevSuccess + ((p->RunLength >> 26) & 0x20) \
131 + p->NS2BSIndx[(size_t)Ppmd7_GetContext(p, p->MinContext->Suffix)->NumStats - 1] \
132 + PPMD7_HiBitsFlag_4(Ppmd7Context_OneState(p->MinContext)->Symbol) \
133 + (p->HiBitsFlag = PPMD7_HiBitsFlag_3(p->FoundState->Symbol)) ]
147#define PPMD7_SYM_END (-1)
148#define PPMD7_SYM_ERROR (-2)
162#define Ppmd7a_RangeDec_IsFinishedOK(p) ((p)->Code == 0)
167#define Ppmd7z_RangeDec_IsFinishedOK(p) ((p)->Code == 0)
int BoolInt
Definition 7zTypes.h:259
unsigned int UInt32
Definition 7zTypes.h:180
#define EXTERN_C_BEGIN
Definition 7zTypes.h:20
unsigned long long int UInt64
Definition 7zTypes.h:234
unsigned short UInt16
Definition 7zTypes.h:173
#define EXTERN_C_END
Definition 7zTypes.h:21
const ISzAlloc * ISzAllocPtr
Definition 7zTypes.h:457
int Int32
Definition 7zTypes.h:179
unsigned char Byte
Definition 7zTypes.h:171
void Ppmd7_Update1(CPpmd7 *p)
void Ppmd7z_Flush_RangeEnc(CPpmd7 *p)
BoolInt Ppmd7z_RangeDec_Init(CPpmd7_RangeDec *p)
void Ppmd7z_Init_RangeEnc(CPpmd7 *p)
void Ppmd7_Update1_0(CPpmd7 *p)
void Ppmd7_Update2(CPpmd7 *p)
BoolInt Ppmd7_Alloc(CPpmd7 *p, UInt32 size, ISzAllocPtr alloc)
struct CPpmd7_Context_ CPpmd7_Context
void Ppmd7z_EncodeSymbols(CPpmd7 *p, const Byte *buf, const Byte *lim)
BoolInt Ppmd7a_RangeDec_Init(CPpmd7_RangeDec *p)
void Ppmd7_Construct(CPpmd7 *p)
void Ppmd7_Init(CPpmd7 *p, unsigned maxOrder)
CPpmd_See * Ppmd7_MakeEscFreq(CPpmd7 *p, unsigned numMasked, UInt32 *scale)
void Ppmd7_Free(CPpmd7 *p, ISzAllocPtr alloc)
int Ppmd7z_DecodeSymbol(CPpmd7 *p)
int Ppmd7a_DecodeSymbol(CPpmd7 *p)
#define PPMD_NUM_INDEXES
Definition Ppmd.h:38
struct CPpmd_State4_ CPpmd_State4
#define Ppmd_Ref_Type(type)
Definition Ppmd.h:112
struct CPpmd_State2_ CPpmd_State2
union CPpmd7_Context_::@124157217047331364377144133003375175015305240034 Union2
CPpmd7_Context_Ref Suffix
Definition Ppmd7.h:43
CPpmd_State4 State4
Definition Ppmd7.h:40
CPpmd_State2 State2
Definition Ppmd7.h:34
union CPpmd7_Context_::@237334202354170267070040361157360166064051166014 Union4
UInt16 SummFreq
Definition Ppmd7.h:33
CPpmd_State_Ref Stats
Definition Ppmd7.h:39
UInt16 NumStats
Definition Ppmd7.h:28
UInt32 Low
Definition Ppmd7.h:57
UInt32 Range
Definition Ppmd7.h:55
UInt32 Code
Definition Ppmd7.h:56
IByteInPtr Stream
Definition Ppmd7.h:58
Byte * Text
Definition Ppmd7.h:83
unsigned HiBitsFlag
Definition Ppmd7.h:77
CPpmd_See DummySee
Definition Ppmd7.h:100
Byte NS2BSIndx[256]
Definition Ppmd7.h:98
CPpmd_See See[25][16]
Definition Ppmd7.h:100
unsigned OrderFall
Definition Ppmd7.h:77
CPpmd7_RangeDec dec
Definition Ppmd7.h:90
unsigned InitEsc
Definition Ppmd7.h:77
unsigned PrevSuccess
Definition Ppmd7.h:77
CPpmd7z_RangeEnc enc
Definition Ppmd7.h:91
Byte * Base
Definition Ppmd7.h:83
Byte * HiUnit
Definition Ppmd7.h:83
UInt32 GlueCount
Definition Ppmd7.h:81
UInt16 BinSumm[128][64]
Definition Ppmd7.h:101
Int32 InitRL
Definition Ppmd7.h:78
Byte * LoUnit
Definition Ppmd7.h:83
Byte NS2Indx[256]
Definition Ppmd7.h:98
Byte Indx2Units[PPMD_NUM_INDEXES+2]
Definition Ppmd7.h:94
CPpmd7_Context * MinContext
Definition Ppmd7.h:75
CPpmd_State * FoundState
Definition Ppmd7.h:76
Byte Units2Indx[128]
Definition Ppmd7.h:95
Byte * UnitsStart
Definition Ppmd7.h:83
UInt32 Size
Definition Ppmd7.h:80
Int32 RunLength
Definition Ppmd7.h:78
CPpmd_Void_Ref FreeList[PPMD_NUM_INDEXES]
Definition Ppmd7.h:96
UInt32 AlignOffset
Definition Ppmd7.h:82
unsigned MaxOrder
Definition Ppmd7.h:77
Byte ExpEscape[16]
Definition Ppmd7.h:99
CPpmd7_Context * MaxContext
Definition Ppmd7.h:75
UInt32 Range
Definition Ppmd7.h:64
UInt64 CacheSize
Definition Ppmd7.h:68
UInt64 Low
Definition Ppmd7.h:67
Byte Cache
Definition Ppmd7.h:65
IByteOutPtr Stream
Definition Ppmd7.h:69