示例#1
0
            internal CLenPriceEnc(CLenPriceEnc other)
                : base(other)
            {
                mPrices = new uint[CLzmaEnc.LZMA_NUM_PB_STATES_MAX][];
                for (int i = 0; i < mPrices.Length; i++)
                {
                    mPrices[i] = new uint[CLzmaEnc.kLenNumSymbolsTotal];
                    for (int j = 0; j < CLzmaEnc.kLenNumSymbolsTotal; j++)
                        mPrices[i][j] = other.mPrices[i][j];
                }

                mTableSize = other.mTableSize;

                mCounters = new uint[CLzmaEnc.LZMA_NUM_PB_STATES_MAX];
                for (int i = 0; i < mCounters.Length; i++)
                    mCounters[i] = other.mCounters[i];
            }
示例#2
0
            internal void LzmaEnc_RestoreState()
            {
                TR("LzmaEnc_RestoreState", 0);

                mLenEnc = new CLenPriceEnc(mSaveState.mLenEnc);
                mRepLenEnc = new CLenPriceEnc(mSaveState.mRepLenEnc);
                mState = mSaveState.mState;

                for (int i = 0; i < kNumStates; i++)
                {
                    memcpy(mIsMatch[i], mSaveState.mIsMatch[i], LZMA_NUM_PB_STATES_MAX * 2);
                    memcpy(mIsRep0Long[i], mSaveState.mIsRep0Long[i], LZMA_NUM_PB_STATES_MAX * 2);
                }

                for (int i = 0; i < kNumLenToPosStates; i++)
                    memcpy(mPosSlotEncoder[i], mSaveState.mPosSlotEncoder[i], (1 << kNumPosSlotBits) * 2);

                memcpy(mIsRep, mSaveState.mIsRep, kNumStates * 2);
                memcpy(mIsRepG0, mSaveState.mIsRepG0, kNumStates * 2);
                memcpy(mIsRepG1, mSaveState.mIsRepG1, kNumStates * 2);
                memcpy(mIsRepG2, mSaveState.mIsRepG2, kNumStates * 2);
                memcpy(mPosEncoders, mSaveState.mPosEncoders, (kNumFullDistances - kEndPosModelIndex) * 2);
                memcpy(mPosAlignEncoder, mSaveState.mPosAlignEncoder, (1 << kNumAlignBits) * 2);
                mReps = mSaveState.mReps;
                memcpy(mLitProbs, mSaveState.mLitProbs, (0x300 << mLcLp) * 2);
            }