UpdateCRC() private method

private UpdateCRC ( int inCh ) : void
inCh int
return void
Ejemplo n.º 1
0
        private void SetupRandPartA()
        {
            if (i2 <= last)
            {
                chPrev = ch2;
                ch2    = ll8[tPos];
                tPos   = tt[tPos];
                if (rNToGo == 0)
                {
                    rNToGo = BZip2Constants.rNums[rTPos];
                    rTPos++;
                    if (rTPos == 512)
                    {
                        rTPos = 0;
                    }
                }
                rNToGo--;
                ch2 ^= (int)((rNToGo == 1) ? 1 : 0);
                i2++;

                currentChar  = ch2;
                currentState = RAND_PART_B_STATE;
                mCrc.UpdateCRC(ch2);
            }
            else
            {
                EndBlock();
                InitBlock();
                SetupBlock();
            }
        }
Ejemplo n.º 2
0
        private void WriteRun()
        {
            if (last < allowableBlockSize)
            {
                inUse[currentChar] = true;
                for (int i = 0; i < runLength; i++)
                {
                    mCrc.UpdateCRC((ushort)currentChar);
                }
                switch (runLength)
                {
                case 1:
                    last++;
                    block[last + 1] = (char)currentChar;
                    break;

                case 2:
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)currentChar;
                    break;

                case 3:
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)currentChar;
                    break;

                default:
                    inUse[runLength - 4] = true;
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)currentChar;
                    last++;
                    block[last + 1] = (char)(runLength - 4);
                    break;
                }
            }
            else
            {
                EndBlock();
                InitBlock();
                WriteRun();
            }
        }