| 36 | |
| 37 | |
| 38 | void 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 | |
| 74 | void ModelPPM::StartModelRare(int MaxOrder) |
nothing calls this directly
no test coverage detected