Source code
Revision control
Copy as Markdown
Other Tools
// InBuffer.cs↩
↩
namespace SevenZip.Buffer↩
{↩
public class InBuffer↩
{↩
byte[] m_Buffer;↩
uint m_Pos;↩
uint m_Limit;↩
uint m_BufferSize;↩
System.IO.Stream m_Stream;↩
bool m_StreamWasExhausted;↩
ulong m_ProcessedSize;↩
↩
public InBuffer(uint bufferSize)↩
{↩
m_Buffer = new byte[bufferSize];↩
m_BufferSize = bufferSize;↩
}↩
↩
public void Init(System.IO.Stream stream)↩
{↩
m_Stream = stream;↩
m_ProcessedSize = 0;↩
m_Limit = 0;↩
m_Pos = 0;↩
m_StreamWasExhausted = false;↩
}↩
↩
public bool ReadBlock()↩
{↩
if (m_StreamWasExhausted)↩
return false;↩
m_ProcessedSize += m_Pos;↩
int aNumProcessedBytes = m_Stream.Read(m_Buffer, 0, (int)m_BufferSize);↩
m_Pos = 0;↩
m_Limit = (uint)aNumProcessedBytes;↩
m_StreamWasExhausted = (aNumProcessedBytes == 0);↩
return (!m_StreamWasExhausted);↩
}↩
↩
↩
public void ReleaseStream()↩
{↩
// m_Stream.Close(); ↩
m_Stream = null;↩
}↩
↩
public bool ReadByte(byte b) // check it↩
{↩
if (m_Pos >= m_Limit)↩
if (!ReadBlock())↩
return false;↩
b = m_Buffer[m_Pos++];↩
return true;↩
}↩
↩
public byte ReadByte()↩
{↩
// return (byte)m_Stream.ReadByte();↩
if (m_Pos >= m_Limit)↩
if (!ReadBlock())↩
return 0xFF;↩
return m_Buffer[m_Pos++];↩
}↩
↩
public ulong GetProcessedSize()↩
{↩
return m_ProcessedSize + m_Pos;↩
}↩
}↩
}↩