63 lines
1.4 KiB
C#
63 lines
1.4 KiB
C#
|
namespace System.IO.Compression {
|
||
|
using System.Diagnostics;
|
||
|
|
||
|
internal class DeflateInput {
|
||
|
private byte[] buffer;
|
||
|
private int count;
|
||
|
private int startIndex;
|
||
|
|
||
|
internal byte[] Buffer {
|
||
|
get {
|
||
|
return buffer;
|
||
|
}
|
||
|
set {
|
||
|
buffer = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal int Count {
|
||
|
get {
|
||
|
return count;
|
||
|
}
|
||
|
set {
|
||
|
count = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal int StartIndex {
|
||
|
get {
|
||
|
return startIndex;
|
||
|
}
|
||
|
set {
|
||
|
startIndex = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal void ConsumeBytes(int n) {
|
||
|
Debug.Assert(n <= count, "Should use more bytes than what we have in the buffer");
|
||
|
startIndex += n;
|
||
|
count -= n;
|
||
|
Debug.Assert(startIndex + count <= buffer.Length, "Input buffer is in invalid state!");
|
||
|
}
|
||
|
|
||
|
internal InputState DumpState() {
|
||
|
InputState savedState;
|
||
|
savedState.count = count;
|
||
|
savedState.startIndex = startIndex;
|
||
|
return savedState;
|
||
|
}
|
||
|
|
||
|
internal void RestoreState(InputState state) {
|
||
|
count = state.count;
|
||
|
startIndex = state.startIndex;
|
||
|
}
|
||
|
|
||
|
internal struct InputState {
|
||
|
internal int count;
|
||
|
internal int startIndex;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|