3 #ifndef __LZ_OUT_WINDOW_H
4 #define __LZ_OUT_WINDOW_H
6 #include "../../IStream.h"
7 #include "../../Common/OutBuffer.h"
10 #ifndef _NO_EXCEPTIONS
11 class CLZOutWindowException
15 CLZOutWindowException(HRESULT errorCode): ErrorCode(errorCode) {}
19 typedef COutBufferException CLZOutWindowException
;
21 class CLZOutWindow
: public COutBuffer
24 void Init(bool solid
= false);
26 // distance >= 0, len > 0,
27 bool CopyBlock(UInt32 distance
, UInt32 len
)
29 UInt32 pos
= _pos
- distance
- 1;
30 if (pos
>= _bufferSize
)
38 if (pos
== _bufferSize
)
40 _buffer
[_pos
++] = _buffer
[pos
++];
41 if (_pos
== _limitPos
)
51 if (_pos
== _limitPos
)
55 Byte
GetByte(UInt32 distance
) const
57 UInt32 pos
= _pos
- distance
- 1;
58 if (pos
>= _bufferSize
)