Example #1
0
            private static void MatchFinderMt3_Skip(CMatchFinderMt p, uint num)
            {
                do
                {
                    if (p.mBtBufPos == p.mBtBufPosLimit)
                    {
                        p.MatchFinderMt_GetNextBlock_Bt();
                    }

                    if (p.mBtNumAvailBytes-- >= 3)
                    {
                        P <byte> cur        = p.mPointerToCurPos;
                        uint[]   hash       = p.mLocalHash;
                        uint     temp       = cur[0].CRC() ^ cur[1];
                        uint     hash2Value = temp & (kHash2Size - 1);
                        uint     hash3Value = (temp ^ ((uint)cur[2] << 8)) & (kHash3Size - 1);
                        hash[kFix3HashSize + hash3Value] = p.mLzPos;
                        hash[hash2Value] = p.mLzPos;
                    }

                    p.mLzPos++;
                    p.mPointerToCurPos++;
                    p.mBtBufPos += p.mBtBuf[p.mBtBufPos] + 1;
                }while (--num != 0);
            }
Example #2
0
            private static void MatchFinderMt0_Skip(CMatchFinderMt p, uint num)
            {
                do
                {
                    if (p.mBtBufPos == p.mBtBufPosLimit)
                    {
                        p.MatchFinderMt_GetNextBlock_Bt();
                    }

                    p.mBtNumAvailBytes--;
                    p.mLzPos++;
                    p.mPointerToCurPos++;
                    p.mBtBufPos += p.mBtBuf[p.mBtBufPos] + 1;
                }while (--num != 0);
            }
Example #3
0
            private static void MatchFinderMt2_Skip(CMatchFinderMt p, uint num)
            {
                do
                {
                    if (p.mBtBufPos == p.mBtBufPosLimit)
                    {
                        p.MatchFinderMt_GetNextBlock_Bt();
                    }

                    if (p.mBtNumAvailBytes-- >= 2)
                    {
                        P <byte> cur        = p.mPointerToCurPos;
                        uint[]   hash       = p.mLocalHash;
                        uint     hash2Value = (cur[0].CRC() ^ cur[1]) & (kHash2Size - 1);
                        hash[hash2Value] = p.mLzPos;
                    }

                    p.mLzPos++;
                    p.mPointerToCurPos++;
                    p.mBtBufPos += p.mBtBuf[p.mBtBufPos] + 1;
                }while (--num != 0);
            }
Example #4
0
            private static void MatchFinderMt4_Skip(CMatchFinderMt p, uint count)
            {
                do
                {
                    if(p.mBtBufPos == p.mBtBufPosLimit)
                        p.MatchFinderMt_GetNextBlock_Bt();

                    if(p.mBtNumAvailBytes-- >= 4)
                    {
                        P<byte> cur = p.mPointerToCurPos;
                        uint[] hash = p.mHash;
                        uint temp = cur[0].CRC() ^ cur[1];
                        uint hash2Value = temp & (kHash2Size - 1);
                        uint hash3Value = (temp ^ ((uint)cur[2] << 8)) & (kHash3Size - 1);
                        uint hash4Value = (temp ^ ((uint)cur[2] << 8) ^ (cur[3].CRC() << 5)) & (kHash4Size - 1);
                        hash[kFix4HashSize + hash4Value] = p.mLzPos;
                        hash[kFix3HashSize + hash3Value] = p.mLzPos;
                        hash[hash2Value] = p.mLzPos;
                    }

                    p.mLzPos++;
                    p.mPointerToCurPos++;
                    p.mBtBufPos += p.mBtBuf[p.mBtBufPos] + 1;
                }
                while(--count != 0);
            }
Example #5
0
            private static void MatchFinderMt2_Skip(CMatchFinderMt p, uint num)
            {
                do
                {
                    if(p.mBtBufPos == p.mBtBufPosLimit)
                        p.MatchFinderMt_GetNextBlock_Bt();

                    if(p.mBtNumAvailBytes-- >= 2)
                    {
                        P<byte> cur = p.mPointerToCurPos;
                        uint[] hash = p.mLocalHash;
                        uint hash2Value = (cur[0].CRC() ^ cur[1]) & (kHash2Size - 1);
                        hash[hash2Value] = p.mLzPos;
                    }

                    p.mLzPos++;
                    p.mPointerToCurPos++;
                    p.mBtBufPos += p.mBtBuf[p.mBtBufPos] + 1;
                }
                while(--num != 0);
            }
Example #6
0
            private static void MatchFinderMt0_Skip(CMatchFinderMt p, uint num)
            {
                do
                {
                    if(p.mBtBufPos == p.mBtBufPosLimit)
                        p.MatchFinderMt_GetNextBlock_Bt();

                    p.mBtNumAvailBytes--;
                    p.mLzPos++;
                    p.mPointerToCurPos++;
                    p.mBtBufPos += p.mBtBuf[p.mBtBufPos] + 1;
                }
                while(--num != 0);
            }