Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1480)

Side by Side Diff: third_party/lzma/v4_65/files/CPP/7zip/Common/InBuffer.cpp

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // InBuffer.cpp
2
3 #include "StdAfx.h"
4
5 #include "InBuffer.h"
6
7 extern "C"
8 {
9 #include "../../../C/Alloc.h"
10 }
11
12 CInBuffer::CInBuffer():
13 _buffer(0),
14 _bufferLimit(0),
15 _bufferBase(0),
16 _stream(0),
17 _bufferSize(0)
18 {}
19
20 bool CInBuffer::Create(UInt32 bufferSize)
21 {
22 const UInt32 kMinBlockSize = 1;
23 if (bufferSize < kMinBlockSize)
24 bufferSize = kMinBlockSize;
25 if (_bufferBase != 0 && _bufferSize == bufferSize)
26 return true;
27 Free();
28 _bufferSize = bufferSize;
29 _bufferBase = (Byte *)::MidAlloc(bufferSize);
30 return (_bufferBase != 0);
31 }
32
33 void CInBuffer::Free()
34 {
35 ::MidFree(_bufferBase);
36 _bufferBase = 0;
37 }
38
39 void CInBuffer::SetStream(ISequentialInStream *stream)
40 {
41 _stream = stream;
42 }
43
44 void CInBuffer::Init()
45 {
46 _processedSize = 0;
47 _buffer = _bufferBase;
48 _bufferLimit = _buffer;
49 _wasFinished = false;
50 #ifdef _NO_EXCEPTIONS
51 ErrorCode = S_OK;
52 #endif
53 }
54
55 bool CInBuffer::ReadBlock()
56 {
57 #ifdef _NO_EXCEPTIONS
58 if (ErrorCode != S_OK)
59 return false;
60 #endif
61 if (_wasFinished)
62 return false;
63 _processedSize += (_buffer - _bufferBase);
64 UInt32 numProcessedBytes;
65 HRESULT result = _stream->Read(_bufferBase, _bufferSize, &numProcessedBytes);
66 #ifdef _NO_EXCEPTIONS
67 ErrorCode = result;
68 #else
69 if (result != S_OK)
70 throw CInBufferException(result);
71 #endif
72 _buffer = _bufferBase;
73 _bufferLimit = _buffer + numProcessedBytes;
74 _wasFinished = (numProcessedBytes == 0);
75 return (!_wasFinished);
76 }
77
78 Byte CInBuffer::ReadBlock2()
79 {
80 if(!ReadBlock())
81 return 0xFF;
82 return *_buffer++;
83 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698