int movePos(int requiredForFlushing, int requiredForFinishing) {
        assert requiredForFlushing >= requiredForFinishing;

        ++readPos;
        int avail = writePos - readPos;

        if (avail < requiredForFlushing) {
            if (avail < requiredForFinishing || !finishing) {
                ++pendingSize;
                avail = 0;
            }
        }

        return avail;
    }
int movePos ( int requiredForFlushing , int requiredForFinishing ) { assert requiredForFlushing >= requiredForFinishing ; ++ readPos ; int avail = writePos - readPos ; if ( avail < requiredForFlushing ) { if ( avail < requiredForFinishing || ! finishing ) { ++ pendingSize ; avail = 0 ; } } return avail ; }
Moves to the next byte, checks if there is enough input available,
and returns the amount of input available.

@param       requiredForFlushing
minimum number of available bytes when
flushing; encoding may be continued with
new input after flushing
@param       requiredForFinishing
minimum number of available bytes when
finishing; encoding must not be continued
after finishing or the match finder state
may be corrupt

@return      the number of bytes available or zero if there
is not enough input available