MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / RestartModelRare

Method RestartModelRare

Libraries/unrar/model.cpp:38–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36
37
38void ModelPPM::RestartModelRare()
39{
40 int i, k, m;
41 memset(CharMask,0,sizeof(CharMask));
42 SubAlloc.InitSubAllocator();
43 InitRL=-(MaxOrder < 12 ? MaxOrder:12)-1;
44 MinContext = MaxContext = (RARPPM_CONTEXT*) SubAlloc.AllocContext();
45 if (MinContext == NULL)
46 throw std::bad_alloc();
47 MinContext->Suffix=NULL;
48 OrderFall=MaxOrder;
49 MinContext->U.SummFreq=(MinContext->NumStats=256)+1;
50 FoundState=MinContext->U.Stats=(RARPPM_STATE*)SubAlloc.AllocUnits(256/2);
51 if (FoundState == NULL)
52 throw std::bad_alloc();
53 for (RunLength=InitRL, PrevSuccess=i=0;i < 256;i++)
54 {
55 MinContext->U.Stats[i].Symbol=i;
56 MinContext->U.Stats[i].Freq=1;
57 MinContext->U.Stats[i].Successor=NULL;
58 }
59
60 static const ushort InitBinEsc[]={
61 0x3CDD,0x1F3F,0x59BF,0x48F3,0x64A1,0x5ABC,0x6632,0x6051
62 };
63
64 for (i=0;i < 128;i++)
65 for (k=0;k < 8;k++)
66 for (m=0;m < 64;m += 8)
67 BinSumm[i][k+m]=BIN_SCALE-InitBinEsc[k]/(i+2);
68 for (i=0;i < 25;i++)
69 for (k=0;k < 16;k++)
70 SEE2Cont[i][k].init(5*i+10);
71}
72
73
74void ModelPPM::StartModelRare(int MaxOrder)

Callers

nothing calls this directly

Calls 4

InitSubAllocatorMethod · 0.80
AllocContextMethod · 0.80
AllocUnitsMethod · 0.80
initMethod · 0.45

Tested by

no test coverage detected