~ubuntu-branches/ubuntu/trusty/advancecomp/trusty

« back to all changes in this revision

Viewing changes to 7z/InByte.cc

  • Committer: Bazaar Package Importer
  • Author(s): Piotr Ozarowski
  • Date: 2006-05-13 21:15:49 UTC
  • Revision ID: james.westby@ubuntu.com-20060513211549-2vu7peis643ojcm5
Tags: upstream-1.15
ImportĀ upstreamĀ versionĀ 1.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "InByte.h"
 
2
 
 
3
namespace NStream{
 
4
 
 
5
CInByte::CInByte(INT aBufferSize):
 
6
  m_BufferSize(aBufferSize),
 
7
  m_BufferBase(0)
 
8
{
 
9
  m_BufferBase = new BYTE[m_BufferSize];
 
10
}
 
11
 
 
12
CInByte::~CInByte()
 
13
{
 
14
  delete []m_BufferBase;
 
15
}
 
16
 
 
17
void CInByte::Init(ISequentialInStream *aStream)
 
18
{
 
19
  m_Stream = aStream;
 
20
  m_ProcessedSize = 0;
 
21
  m_Buffer = m_BufferBase;
 
22
  m_BufferLimit = m_Buffer;
 
23
  m_StreamWasExhausted = false;
 
24
}
 
25
 
 
26
bool CInByte::ReadBlock()
 
27
{
 
28
  if (m_StreamWasExhausted)
 
29
    return false;
 
30
  m_ProcessedSize += (m_Buffer - m_BufferBase);
 
31
  INT aNumProcessedBytes;
 
32
  HRESULT aResult = m_Stream->Read(m_BufferBase, m_BufferSize, &aNumProcessedBytes);
 
33
  if (aResult != S_OK)
 
34
    throw aResult;
 
35
  m_Buffer = m_BufferBase;
 
36
  m_BufferLimit = m_Buffer + aNumProcessedBytes;
 
37
  m_StreamWasExhausted = (aNumProcessedBytes == 0);
 
38
  return (!m_StreamWasExhausted);
 
39
}
 
40
 
 
41
}