Blame libarchive/archive_ppmd7_private.h

Packit Service 1d0348
/* Ppmd7.h -- PPMdH compression codec
Packit Service 1d0348
2010-03-12 : Igor Pavlov : Public domain
Packit Service 1d0348
This code is based on PPMd var.H (2001): Dmitry Shkarin : Public domain */
Packit Service 1d0348
Packit Service 1d0348
/* This code supports virtual RangeDecoder and includes the implementation
Packit Service 1d0348
of RangeCoder from 7z, instead of RangeCoder from original PPMd var.H.
Packit Service 1d0348
If you need the compatibility with original PPMd var.H, you can use external RangeDecoder */
Packit Service 1d0348
Packit Service 1d0348
#ifndef __LIBARCHIVE_BUILD
Packit Service 1d0348
#error This header is only to be used internally to libarchive.
Packit Service 1d0348
#endif
Packit Service 1d0348
Packit Service 1d0348
#ifndef ARCHIVE_PPMD7_PRIVATE_H_INCLUDED
Packit Service 1d0348
#define ARCHIVE_PPMD7_PRIVATE_H_INCLUDED
Packit Service 1d0348
Packit Service 1d0348
#include "archive_ppmd_private.h"
Packit Service 1d0348
Packit Service 1d0348
#define PPMD7_MIN_ORDER 2
Packit Service 1d0348
#define PPMD7_MAX_ORDER 64
Packit Service 1d0348
Packit Service 1d0348
#define PPMD7_MIN_MEM_SIZE (1 << 11)
Packit Service 1d0348
#define PPMD7_MAX_MEM_SIZE (0xFFFFFFFFu - 12 * 3)
Packit Service 1d0348
Packit Service 1d0348
struct CPpmd7_Context_;
Packit Service 1d0348
Packit Service 1d0348
typedef
Packit Service 1d0348
  #ifdef PPMD_32BIT
Packit Service 1d0348
    struct CPpmd7_Context_ *
Packit Service 1d0348
  #else
Packit Service 1d0348
    UInt32
Packit Service 1d0348
  #endif
Packit Service 1d0348
  CPpmd7_Context_Ref;
Packit Service 1d0348
Packit Service 1d0348
typedef struct CPpmd7_Context_
Packit Service 1d0348
{
Packit Service 1d0348
  UInt16 NumStats;
Packit Service 1d0348
  UInt16 SummFreq;
Packit Service 1d0348
  CPpmd_State_Ref Stats;
Packit Service 1d0348
  CPpmd7_Context_Ref Suffix;
Packit Service 1d0348
} CPpmd7_Context;
Packit Service 1d0348
Packit Service 1d0348
#define Ppmd7Context_OneState(p) ((CPpmd_State *)&(p)->SummFreq)
Packit Service 1d0348
Packit Service 1d0348
typedef struct
Packit Service 1d0348
{
Packit Service 1d0348
  CPpmd7_Context *MinContext, *MaxContext;
Packit Service 1d0348
  CPpmd_State *FoundState;
Packit Service 1d0348
  unsigned OrderFall, InitEsc, PrevSuccess, MaxOrder, HiBitsFlag;
Packit Service 1d0348
  Int32 RunLength, InitRL; /* must be 32-bit at least */
Packit Service 1d0348
Packit Service 1d0348
  UInt32 Size;
Packit Service 1d0348
  UInt32 GlueCount;
Packit Service 1d0348
  Byte *Base, *LoUnit, *HiUnit, *Text, *UnitsStart;
Packit Service 1d0348
  UInt32 AlignOffset;
Packit Service 1d0348
Packit Service 1d0348
  Byte Indx2Units[PPMD_NUM_INDEXES];
Packit Service 1d0348
  Byte Units2Indx[128];
Packit Service 1d0348
  CPpmd_Void_Ref FreeList[PPMD_NUM_INDEXES];
Packit Service 1d0348
  Byte NS2Indx[256], NS2BSIndx[256], HB2Flag[256];
Packit Service 1d0348
  CPpmd_See DummySee, See[25][16];
Packit Service 1d0348
  UInt16 BinSumm[128][64];
Packit Service 1d0348
} CPpmd7;
Packit Service 1d0348
Packit Service 1d0348
/* ---------- Decode ---------- */
Packit Service 1d0348
Packit Service 1d0348
typedef struct
Packit Service 1d0348
{
Packit Service 1d0348
  UInt32 (*GetThreshold)(void *p, UInt32 total);
Packit Service 1d0348
  void (*Decode)(void *p, UInt32 start, UInt32 size);
Packit Service 1d0348
  UInt32 (*DecodeBit)(void *p, UInt32 size0);
Packit Service 1d0348
} IPpmd7_RangeDec;
Packit Service 1d0348
Packit Service 1d0348
typedef struct
Packit Service 1d0348
{
Packit Service 1d0348
  IPpmd7_RangeDec p;
Packit Service 1d0348
  UInt32 Range;
Packit Service 1d0348
  UInt32 Code;
Packit Service 1d0348
  UInt32 Low;
Packit Service 1d0348
  UInt32 Bottom;
Packit Service 1d0348
  IByteIn *Stream;
Packit Service 1d0348
} CPpmd7z_RangeDec;
Packit Service 1d0348
Packit Service 1d0348
/* ---------- Encode ---------- */
Packit Service 1d0348
Packit Service 1d0348
typedef struct
Packit Service 1d0348
{
Packit Service 1d0348
  UInt64 Low;
Packit Service 1d0348
  UInt32 Range;
Packit Service 1d0348
  Byte Cache;
Packit Service 1d0348
  UInt64 CacheSize;
Packit Service 1d0348
  IByteOut *Stream;
Packit Service 1d0348
} CPpmd7z_RangeEnc;
Packit Service 1d0348
Packit Service 1d0348
typedef struct
Packit Service 1d0348
{
Packit Service 1d0348
  /* Base Functions */
Packit Service 1d0348
  void (*Ppmd7_Construct)(CPpmd7 *p);
Packit Service 1d0348
  Bool (*Ppmd7_Alloc)(CPpmd7 *p, UInt32 size);
Packit Service 1d0348
  void (*Ppmd7_Free)(CPpmd7 *p);
Packit Service 1d0348
  void (*Ppmd7_Init)(CPpmd7 *p, unsigned maxOrder);
Packit Service 1d0348
  #define Ppmd7_WasAllocated(p) ((p)->Base != NULL)
Packit Service 1d0348
Packit Service 1d0348
  /* Decode Functions */
Packit Service 1d0348
  void (*Ppmd7z_RangeDec_CreateVTable)(CPpmd7z_RangeDec *p);
Packit Service 1d0348
  void (*PpmdRAR_RangeDec_CreateVTable)(CPpmd7z_RangeDec *p);
Packit Service 1d0348
  Bool (*Ppmd7z_RangeDec_Init)(CPpmd7z_RangeDec *p);
Packit Service 1d0348
  Bool (*PpmdRAR_RangeDec_Init)(CPpmd7z_RangeDec *p);
Packit Service 1d0348
  #define Ppmd7z_RangeDec_IsFinishedOK(p) ((p)->Code == 0)
Packit Service 1d0348
  int (*Ppmd7_DecodeSymbol)(CPpmd7 *p, IPpmd7_RangeDec *rc);
Packit Service 1d0348
Packit Service 1d0348
  /* Encode Functions */
Packit Service 1d0348
  void (*Ppmd7z_RangeEnc_Init)(CPpmd7z_RangeEnc *p);
Packit Service 1d0348
  void (*Ppmd7z_RangeEnc_FlushData)(CPpmd7z_RangeEnc *p);
Packit Service 1d0348
Packit Service 1d0348
  void (*Ppmd7_EncodeSymbol)(CPpmd7 *p, CPpmd7z_RangeEnc *rc, int symbol);
Packit Service 1d0348
} IPpmd7;
Packit Service 1d0348
Packit Service 1d0348
extern const IPpmd7 __archive_ppmd7_functions;
Packit Service 1d0348
#endif