亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? model.hpp

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫控件
?? HPP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
 *  This file is part of PPMd project                                       *
 *  Written and distributed to public domain by Dmitry Shkarin 1997,        *
 *  1999-2000                                                               *
 *  Contents: model description and encoding/decoding routines              *
 ****************************************************************************/

#pragma hdrstop
#include "Coder.hpp"

const int INT_BITS=7, PERIOD_BITS=7, MAX_FREQ=124;
const int INTERVAL=1 << INT_BITS, BIN_SCALE=INTERVAL << PERIOD_BITS;

#pragma pack(1)
static struct SEE2_CONTEXT { // SEE-contexts for PPM-contexts with masked symbols
    WORD Summ;
    BYTE Shift, Count;
    void init(int InitVal) { Summ=InitVal << (Shift=PERIOD_BITS-4); Count=3; }
    UINT getMean() {
        UINT RetVal=Summ >> Shift;          Summ -= RetVal;
        RetVal &= 0x03FF;                   return RetVal+(RetVal == 0);
    }
    void update() {
        if (Shift < PERIOD_BITS && --Count == 0) {
            Summ += Summ;                   Count=3 << Shift++;
        }
    }
} _PACK_ATTR SEE2Cont[44][8];
static struct PPM_CONTEXT {
//class PPM_CONTEXT {
//public:
    WORD NumStats,SummFreq;                     // sizeof(WORD) > sizeof(BYTE)
    struct STATE { BYTE Symbol, Freq; PPM_CONTEXT* Successor; } _PACK_ATTR * Stats;
    PPM_CONTEXT* Suffix;
    inline PPM_CONTEXT(STATE* pStats, PPM_CONTEXT* ShorterContext);
    inline PPM_CONTEXT();
    inline void encodeBinSymbol(int symbol);    // MaxOrder:
    inline void   encodeSymbol1(int symbol);    //  ABCD    context
    inline void   encodeSymbol2(int symbol);    //   BCD    suffix
    inline void           decodeBinSymbol();    //   BCDE   successor
    inline void             decodeSymbol1();    // other orders:
    inline void             decodeSymbol2();    //   BCD    context
    inline void           update1(STATE* p);    //    CD    suffix
    inline void           update2(STATE* p);    //   BCDE   successor
    void                          rescale();
    inline SEE2_CONTEXT* makeEscFreq2(int Diff);
//    void* operator new(size_t ) { return AllocContext(); }
    STATE& oneState() const { return (STATE&) SummFreq; }
} _PACK_ATTR * MinContext, * MedContext, * MaxContext;
#pragma pack()

static PPM_CONTEXT::STATE* FoundState;      // found next state transition
static int NumMasked, InitEsc, OrderFall, MaxOrder;
static BYTE CharMask[256], NS2Indx[256], NS2BSIndx[256];
static BYTE EscCount, PrintCount, PrevSuccess;
static WORD BinSumm[128][16];               // binary SEE-contexts

inline PPM_CONTEXT::PPM_CONTEXT(STATE* pStats,PPM_CONTEXT* ShorterContext):
        NumStats(1), Suffix(ShorterContext) { pStats->Successor=this; }
inline PPM_CONTEXT::PPM_CONTEXT(): NumStats(0) {}
static void StartModel()
{
    int i, k;
    PPM_CONTEXT *oldMC;

    InitSubAllocator();

//    MaxContext = new PPM_CONTEXT();
    MaxContext = (PPM_CONTEXT*) AllocContext();
    MaxContext->NumStats = 0;

    MaxContext->Suffix=NULL;
    MaxContext->SummFreq=(MaxContext->NumStats=256)+1;
    MaxContext->Stats = (PPM_CONTEXT::STATE*) AllocUnitsRare(256/2);
    for (PrevSuccess=i=0;i < 256;i++) {
        MaxContext->Stats[i].Symbol=i;      MaxContext->Stats[i].Freq=1;
        MaxContext->Stats[i].Successor=NULL;
    }
    PPM_CONTEXT::STATE* p=MaxContext->Stats;
    for (OrderFall=i=1; ;i++)
    {
//        MaxContext = new PPM_CONTEXT(p,MaxContext);

     oldMC = MaxContext;
     MaxContext = (PPM_CONTEXT*) AllocContext();
     p->Successor = MaxContext;
     MaxContext->NumStats = 1;
     MaxContext->Suffix = oldMC;

        if (i == MaxOrder)                  break;
        p=&(MaxContext->oneState());
        p->Symbol = 0;                      p->Freq = 1;
    }
    MaxContext->NumStats=0;                 MedContext=MinContext=MaxContext->Suffix;
static const WORD InitBinEsc[16] = {
                0x3CDD,0x1F3F,0x59BF,0x48F3,0x5FFB,0x5545,0x63D1,0x5D9D,
                0x64A1,0x5ABC,0x6632,0x6051,0x68F6,0x549B,0x6BCA,0x3AB0, };
    for (i=0;i < 128;i++)
        for (k=0;k < 16;k++)
            BinSumm[i][k]=BIN_SCALE-InitBinEsc[k]/(i+2);
    for (i=0;i <   6;i++)                   NS2BSIndx[i]=2*i;
    for (   ;i <  50;i++)                   NS2BSIndx[i]=12;
    for (   ;i < 256;i++)                   NS2BSIndx[i]=14;
    for (i=0;i < 43;i++)
            for (k=0;k < 8;k++)             SEE2Cont[i][k].init(4*i+10);
    SEE2Cont[i][0].Shift=PERIOD_BITS;
    for (i=0;i < 4;i++)                     NS2Indx[i]=i;
    for ( ;i < 4+8;i++)                     NS2Indx[i]=4+((i-4) >> 1);
    for ( ;i < 4+8+32;i++)                  NS2Indx[i]=4+4+((i-4-8) >> 2);
    for ( ;i < 256;i++)                     NS2Indx[i]=4+4+8+((i-4-8-32) >> 3);
    memset(CharMask,0,sizeof(CharMask));    EscCount=PrintCount=1;

    return;
}
inline void StopModel() {}
void PPM_CONTEXT::rescale()
{

    int OldNS=NumStats, i=NumStats-1, Adder, EscFreq;
    STATE* p1, * p;
    for (p=FoundState;p != Stats;p--)       SWAP(p[0],p[-1]);
    Stats->Freq += 4;                       SummFreq += 4;
    EscFreq=SummFreq-p->Freq;               Adder=(OrderFall != 0);
    SummFreq = (p->Freq=(p->Freq+Adder) >> 1);
    do {
        EscFreq -= (++p)->Freq;
        SummFreq += (p->Freq=(p->Freq+Adder) >> 1);
        if (p[0].Freq > p[-1].Freq) {
            STATE tmp=*(p1=p);
            do { p1[0]=p1[-1]; } while (--p1 != Stats && tmp.Freq > p1[-1].Freq);
            *p1=tmp;
        }
    } while ( --i );
    if (p->Freq == 0) {
        do { i++; } while ((--p)->Freq == 0);
        EscFreq += i;
        if ((NumStats -= i) == 1) {
            STATE tmp=*Stats;
            do { tmp.Freq-=(tmp.Freq >> 1); EscFreq>>=1; } while (EscFreq > 1);
            FreeUnits(Stats,(OldNS+1) >> 1);
            *(FoundState=&oneState())=tmp;  return;
        }
    }
    SummFreq += (EscFreq -= (EscFreq >> 1));
    int n0=(OldNS+1) >> 1, n1=(NumStats+1) >> 1;
    if (n0 != n1)
            Stats=(STATE*)ShrinkUnits(Stats,n0,n1);
    FoundState=Stats;

}
static BOOL MakeRoot(UINT SkipCount,PPM_CONTEXT::STATE* p1)
{
    PPM_CONTEXT* oldPC;
    PPM_CONTEXT* pc=MinContext, * UpBranch=FoundState->Successor;
    PPM_CONTEXT::STATE* p, * ps[MAX_O], ** pps=ps;
    if (SkipCount == 0) {
        *pps++ = FoundState;
        if ( !pc->Suffix )                  goto NO_LOOP;
    } else if (SkipCount == 2)              pc=pc->Suffix;
    if ( p1 ) {
        p=p1;                               pc=pc->Suffix;
        goto LOOP_ENTRY;
    }
    do {
        pc=pc->Suffix;
        if (pc->NumStats != 1) {
            if ((p=pc->Stats)->Symbol != FoundState->Symbol)
                do { p++; } while (p->Symbol != FoundState->Symbol);
        } else                              p=&(pc->oneState());
LOOP_ENTRY:
        if (p->Successor != UpBranch) {
            pc=p->Successor;                break;
        }
        *pps++ = p;
    } while ( pc->Suffix );
NO_LOOP:


    PPM_CONTEXT::STATE& UpState=UpBranch->oneState();

    if (pc->NumStats != 1)
    {
        UINT cf=UpState.Symbol;
        if ((p=pc->Stats)->Symbol != cf)
                do
                { p++; }
                while (p->Symbol != cf);
        UINT s0=pc->SummFreq-pc->NumStats-(cf=p->Freq-1);
        UpState.Freq=1+((2*cf <= s0)?(5*cf > s0):((2*cf+3*s0-1)/(2*s0)));
    }
    else
     UpState.Freq=pc->oneState().Freq;

    while (--pps >= ps)
    {

//        pc = new PPM_CONTEXT(*pps,pc);

     oldPC = pc;
     pc = (PPM_CONTEXT*) AllocContext();
     (PPM_CONTEXT*)(*pps)->Successor = pc;
     pc->NumStats = 1;
     pc->Suffix = oldPC;

          if ( !pc )
           return FALSE;

        pc->oneState()=UpState;
    }

    if ( !OrderFall )
    {
        UpBranch->NumStats=1;
        UpBranch->Suffix=pc;
    }

    return TRUE;
}
static void UpdateModel()
{

    PPM_CONTEXT::STATE fs=*FoundState, * p, *p1=NULL;
    PPM_CONTEXT* pc, * Successor;
    UINT ns1, ns, cf, sf, s0, SkipCount=0;
    if (fs.Freq < MAX_FREQ/4 && (pc=MinContext->Suffix) != NULL) {
        if (pc->NumStats != 1) {
            if ((p1=pc->Stats)->Symbol != fs.Symbol) {
                do { p1++; } while (p1->Symbol != fs.Symbol);
                if (p1[0].Freq >= p1[-1].Freq) {
                    SWAP(p1[0],p1[-1]);     p1--;
                }
            }
            if (p1->Freq < 7*MAX_FREQ/8) {
                p1->Freq += 2;              pc->SummFreq += 2;
            }
        } else {
            p1=&(pc->oneState());           p1->Freq += (p1->Freq < 32);
        }
    }
    if (OrderFall == 0)
    {
     if ( !MakeRoot(2,NULL) )            goto RESTART_MODEL;
        MinContext=MedContext=fs.Successor; return;
    }
    else

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久精品一区二区| 自拍偷自拍亚洲精品播放| 美国三级日本三级久久99| 国产精品国产三级国产aⅴ入口| 91麻豆视频网站| 欧美日本一道本在线视频| 麻豆国产精品一区二区三区| 亚洲欧洲99久久| 国产又粗又猛又爽又黄91精品| 欧美精彩视频一区二区三区| 精品区一区二区| 26uuu国产一区二区三区| 精品国产91九色蝌蚪| 精品国产区一区| 久久久不卡网国产精品一区| 久久蜜桃av一区精品变态类天堂| 日韩国产精品久久久| 精品国产免费一区二区三区四区| 日韩欧美一级特黄在线播放| 欧美成人精品高清在线播放| 久久久久久久综合日本| 国产精品美女久久久久久2018 | 一本色道久久综合亚洲精品按摩| 一本一本久久a久久精品综合麻豆| 欧美性猛交xxxx乱大交退制版| 欧美私模裸体表演在线观看| 欧美伦理电影网| 欧美一区二区成人| 久久久久国产精品人| 亚洲欧洲中文日韩久久av乱码| 亚洲伊人色欲综合网| 蜜桃视频一区二区三区| 国产一区二区在线免费观看| www.日韩av| 欧美日韩色一区| 久久综合久色欧美综合狠狠| 亚洲同性gay激情无套| 午夜天堂影视香蕉久久| 久久99国产精品免费| 成人一级片在线观看| 色94色欧美sute亚洲线路一ni| 91精品欧美福利在线观看| 国产亚洲污的网站| 一区二区三区国产精华| 麻豆精品视频在线观看免费| yourporn久久国产精品| 欧美三级在线视频| 久久久久久一二三区| 一级日本不卡的影视| 麻豆成人在线观看| 99re在线精品| 精品国产制服丝袜高跟| 亚洲欧美日本在线| 久久国产精品一区二区| 99视频一区二区| 日韩精品一区二区三区中文不卡| 亚洲色图.com| 蜜桃视频一区二区三区| 91一区二区在线观看| www日韩大片| 亚洲国产综合91精品麻豆| 国产精品一区三区| 欧美色综合久久| 国产香蕉久久精品综合网| 亚洲成人资源在线| 成人久久18免费网站麻豆| 56国语精品自产拍在线观看| 国产精品成人免费精品自在线观看| 奇米四色…亚洲| 色素色在线综合| 欧美激情在线免费观看| 老汉av免费一区二区三区| 在线欧美小视频| 国产色爱av资源综合区| 蜜臀av性久久久久蜜臀aⅴ流畅| 91视频在线看| 国产区在线观看成人精品| 青青国产91久久久久久| 91国内精品野花午夜精品| 欧美激情一区二区三区不卡 | 性做久久久久久免费观看| proumb性欧美在线观看| 精品成人a区在线观看| 婷婷成人综合网| 欧美亚洲国产bt| 一区二区在线观看视频| 成人av网站在线观看| www久久精品| 久久99久国产精品黄毛片色诱| 欧美日韩国产高清一区二区| 亚洲午夜一区二区| 偷拍一区二区三区四区| 国产色91在线| 18欧美乱大交hd1984| 国产丶欧美丶日本不卡视频| 日韩午夜激情免费电影| 天天爽夜夜爽夜夜爽精品视频| 91久久免费观看| 亚洲精品视频在线看| 91小宝寻花一区二区三区| 中文字幕一区二区三区色视频 | 91麻豆精品国产91| 午夜精品123| 欧美日韩一区二区三区免费看| 一区二区三国产精华液| 在线影院国内精品| 亚洲综合偷拍欧美一区色| 91激情在线视频| 悠悠色在线精品| 欧美视频日韩视频| 亚洲成年人影院| 日韩视频在线你懂得| 美国一区二区三区在线播放| 精品国产凹凸成av人网站| 国产精品小仙女| 中文字幕av在线一区二区三区| 成人av一区二区三区| 亚洲欧美另类久久久精品2019| 91国模大尺度私拍在线视频| 亚洲自拍与偷拍| 在线电影院国产精品| 蜜臀久久久99精品久久久久久| 欧美videossexotv100| 狠狠v欧美v日韩v亚洲ⅴ| 国产性天天综合网| 99视频有精品| 亚洲二区在线观看| 日韩精品一区二区三区在线观看| 国产一区二区导航在线播放| 中文av字幕一区| 色婷婷久久久亚洲一区二区三区| 亚洲va在线va天堂| 日韩欧美黄色影院| 成人亚洲一区二区一| 夜夜夜精品看看| 日韩无一区二区| 国产成人在线视频网站| 亚洲色大成网站www久久九九| 欧美日韩国产精选| 国产精品一区一区| 亚洲在线视频免费观看| 精品久久久久久无| av在线播放不卡| 日韩激情一区二区| 国产网站一区二区| 欧美在线观看你懂的| 另类的小说在线视频另类成人小视频在线 | 日本福利一区二区| 麻豆精品久久精品色综合| 国产精品美女久久久久久| 欧美日韩国产首页| 国产精品1区2区3区在线观看| 中文字幕在线免费不卡| 欧美一区二区三区免费| 成人动漫av在线| 视频在线观看国产精品| 国产精品三级电影| 在线一区二区三区四区| 激情久久五月天| 日产国产欧美视频一区精品| 成人av资源在线| 亚洲精品视频在线| 91精品国产丝袜白色高跟鞋| 成人一级视频在线观看| 99精品久久只有精品| 成人av免费网站| xfplay精品久久| 亚洲欧美日韩小说| 天天综合天天综合色| 久久99精品久久久久久久久久久久 | 91麻豆精品91久久久久久清纯 | 蜜臀91精品一区二区三区| 国产毛片精品一区| 国产人成亚洲第一网站在线播放| 色综合一区二区| 精品一二三四在线| 午夜精品福利一区二区三区av| 中文欧美字幕免费| 久久这里只有精品首页| 欧美性猛片aaaaaaa做受| heyzo一本久久综合| 黄一区二区三区| 奇米四色…亚洲| 亚洲午夜久久久久久久久久久| 中文字幕视频一区| 国产视频一区在线观看 | 国产人久久人人人人爽| 欧美www视频| 91精品一区二区三区在线观看| 一本色道a无线码一区v| 成人午夜大片免费观看| 国产自产高清不卡| 久久精品国产免费| 男女男精品网站| 婷婷丁香激情综合| 午夜精品一区二区三区三上悠亚| 亚洲色图视频网| 亚洲乱码国产乱码精品精可以看| 国产欧美日韩综合| 久久久久久久久久久久久久久99|