diff -r 0135e64c6c66 -r c4fd2813b127 misc/libphysfs/lzma/Java/SevenZip/Compression/LZ/InWindow.java --- a/misc/libphysfs/lzma/Java/SevenZip/Compression/LZ/InWindow.java Wed May 16 18:22:28 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -// LZ.InWindow - -package SevenZip.Compression.LZ; - -import java.io.IOException; - -public class InWindow -{ - public byte[] _bufferBase; // pointer to buffer with data - java.io.InputStream _stream; - int _posLimit; // offset (from _buffer) of first byte when new block reading must be done - boolean _streamEndWasReached; // if (true) then _streamPos shows real end of stream - - int _pointerToLastSafePosition; - - public int _bufferOffset; - - public int _blockSize; // Size of Allocated memory block - public int _pos; // offset (from _buffer) of curent byte - int _keepSizeBefore; // how many BYTEs must be kept in buffer before _pos - int _keepSizeAfter; // how many BYTEs must be kept buffer after _pos - public int _streamPos; // offset (from _buffer) of first not read byte from Stream - - public void MoveBlock() - { - int offset = _bufferOffset + _pos - _keepSizeBefore; - // we need one additional byte, since MovePos moves on 1 byte. - if (offset > 0) - offset--; - - int numBytes = _bufferOffset + _streamPos - offset; - - // check negative offset ???? - for (int i = 0; i < numBytes; i++) - _bufferBase[i] = _bufferBase[offset + i]; - _bufferOffset -= offset; - } - - public void ReadBlock() throws IOException - { - if (_streamEndWasReached) - return; - while (true) - { - int size = (0 - _bufferOffset) + _blockSize - _streamPos; - if (size == 0) - return; - int numReadBytes = _stream.read(_bufferBase, _bufferOffset + _streamPos, size); - if (numReadBytes == -1) - { - _posLimit = _streamPos; - int pointerToPostion = _bufferOffset + _posLimit; - if (pointerToPostion > _pointerToLastSafePosition) - _posLimit = _pointerToLastSafePosition - _bufferOffset; - - _streamEndWasReached = true; - return; - } - _streamPos += numReadBytes; - if (_streamPos >= _pos + _keepSizeAfter) - _posLimit = _streamPos - _keepSizeAfter; - } - } - - void Free() { _bufferBase = null; } - - public void Create(int keepSizeBefore, int keepSizeAfter, int keepSizeReserv) - { - _keepSizeBefore = keepSizeBefore; - _keepSizeAfter = keepSizeAfter; - int blockSize = keepSizeBefore + keepSizeAfter + keepSizeReserv; - if (_bufferBase == null || _blockSize != blockSize) - { - Free(); - _blockSize = blockSize; - _bufferBase = new byte[_blockSize]; - } - _pointerToLastSafePosition = _blockSize - keepSizeAfter; - } - - public void SetStream(java.io.InputStream stream) { _stream = stream; } - public void ReleaseStream() { _stream = null; } - - public void Init() throws IOException - { - _bufferOffset = 0; - _pos = 0; - _streamPos = 0; - _streamEndWasReached = false; - ReadBlock(); - } - - public void MovePos() throws IOException - { - _pos++; - if (_pos > _posLimit) - { - int pointerToPostion = _bufferOffset + _pos; - if (pointerToPostion > _pointerToLastSafePosition) - MoveBlock(); - ReadBlock(); - } - } - - public byte GetIndexByte(int index) { return _bufferBase[_bufferOffset + _pos + index]; } - - // index + limit have not to exceed _keepSizeAfter; - public int GetMatchLen(int index, int distance, int limit) - { - if (_streamEndWasReached) - if ((_pos + index) + limit > _streamPos) - limit = _streamPos - (_pos + index); - distance++; - // Byte *pby = _buffer + (size_t)_pos + index; - int pby = _bufferOffset + _pos + index; - - int i; - for (i = 0; i < limit && _bufferBase[pby + i] == _bufferBase[pby + i - distance]; i++); - return i; - } - - public int GetNumAvailableBytes() { return _streamPos - _pos; } - - public void ReduceOffsets(int subValue) - { - _bufferOffset += subValue; - _posLimit -= subValue; - _pos -= subValue; - _streamPos -= subValue; - } -}