Index: third_party/lzma/v4_65/files/CPP/7zip/Compress/RangeCoder.h |
diff --git a/third_party/lzma/v4_65/files/CPP/7zip/Compress/RangeCoder.h b/third_party/lzma/v4_65/files/CPP/7zip/Compress/RangeCoder.h |
deleted file mode 100644 |
index 1e14ac1f825df150ba94f731518ddd2469ea7ace..0000000000000000000000000000000000000000 |
--- a/third_party/lzma/v4_65/files/CPP/7zip/Compress/RangeCoder.h |
+++ /dev/null |
@@ -1,204 +0,0 @@ |
-// Compress/RangeCoder.h |
- |
-#ifndef __COMPRESS_RANGE_CODER_H |
-#define __COMPRESS_RANGE_CODER_H |
- |
-#include "../Common/InBuffer.h" |
-#include "../Common/OutBuffer.h" |
- |
-namespace NCompress { |
-namespace NRangeCoder { |
- |
-const int kNumTopBits = 24; |
-const UInt32 kTopValue = (1 << kNumTopBits); |
- |
-class CEncoder |
-{ |
- UInt32 _cacheSize; |
- Byte _cache; |
-public: |
- UInt64 Low; |
- UInt32 Range; |
- COutBuffer Stream; |
- bool Create(UInt32 bufferSize) { return Stream.Create(bufferSize); } |
- |
- void SetStream(ISequentialOutStream *stream) { Stream.SetStream(stream); } |
- void Init() |
- { |
- Stream.Init(); |
- Low = 0; |
- Range = 0xFFFFFFFF; |
- _cacheSize = 1; |
- _cache = 0; |
- } |
- |
- void FlushData() |
- { |
- // Low += 1; |
- for(int i = 0; i < 5; i++) |
- ShiftLow(); |
- } |
- |
- HRESULT FlushStream() { return Stream.Flush(); } |
- |
- void ReleaseStream() { Stream.ReleaseStream(); } |
- |
- void Encode(UInt32 start, UInt32 size, UInt32 total) |
- { |
- Low += start * (Range /= total); |
- Range *= size; |
- while (Range < kTopValue) |
- { |
- Range <<= 8; |
- ShiftLow(); |
- } |
- } |
- |
- void ShiftLow() |
- { |
- if ((UInt32)Low < (UInt32)0xFF000000 || (int)(Low >> 32) != 0) |
- { |
- Byte temp = _cache; |
- do |
- { |
- Stream.WriteByte((Byte)(temp + (Byte)(Low >> 32))); |
- temp = 0xFF; |
- } |
- while(--_cacheSize != 0); |
- _cache = (Byte)((UInt32)Low >> 24); |
- } |
- _cacheSize++; |
- Low = (UInt32)Low << 8; |
- } |
- |
- void EncodeDirectBits(UInt32 value, int numBits) |
- { |
- for (numBits--; numBits >= 0; numBits--) |
- { |
- Range >>= 1; |
- Low += Range & (0 - ((value >> numBits) & 1)); |
- if (Range < kTopValue) |
- { |
- Range <<= 8; |
- ShiftLow(); |
- } |
- } |
- } |
- |
- void EncodeBit(UInt32 size0, UInt32 numTotalBits, UInt32 symbol) |
- { |
- UInt32 newBound = (Range >> numTotalBits) * size0; |
- if (symbol == 0) |
- Range = newBound; |
- else |
- { |
- Low += newBound; |
- Range -= newBound; |
- } |
- while (Range < kTopValue) |
- { |
- Range <<= 8; |
- ShiftLow(); |
- } |
- } |
- |
- UInt64 GetProcessedSize() { return Stream.GetProcessedSize() + _cacheSize + 4; } |
-}; |
- |
-class CDecoder |
-{ |
-public: |
- CInBuffer Stream; |
- UInt32 Range; |
- UInt32 Code; |
- bool Create(UInt32 bufferSize) { return Stream.Create(bufferSize); } |
- |
- void Normalize() |
- { |
- while (Range < kTopValue) |
- { |
- Code = (Code << 8) | Stream.ReadByte(); |
- Range <<= 8; |
- } |
- } |
- |
- void SetStream(ISequentialInStream *stream) { Stream.SetStream(stream); } |
- void Init() |
- { |
- Stream.Init(); |
- Code = 0; |
- Range = 0xFFFFFFFF; |
- for(int i = 0; i < 5; i++) |
- Code = (Code << 8) | Stream.ReadByte(); |
- } |
- |
- void ReleaseStream() { Stream.ReleaseStream(); } |
- |
- UInt32 GetThreshold(UInt32 total) |
- { |
- return (Code) / ( Range /= total); |
- } |
- |
- void Decode(UInt32 start, UInt32 size) |
- { |
- Code -= start * Range; |
- Range *= size; |
- Normalize(); |
- } |
- |
- UInt32 DecodeDirectBits(int numTotalBits) |
- { |
- UInt32 range = Range; |
- UInt32 code = Code; |
- UInt32 result = 0; |
- for (int i = numTotalBits; i != 0; i--) |
- { |
- range >>= 1; |
- /* |
- result <<= 1; |
- if (code >= range) |
- { |
- code -= range; |
- result |= 1; |
- } |
- */ |
- UInt32 t = (code - range) >> 31; |
- code -= range & (t - 1); |
- result = (result << 1) | (1 - t); |
- |
- if (range < kTopValue) |
- { |
- code = (code << 8) | Stream.ReadByte(); |
- range <<= 8; |
- } |
- } |
- Range = range; |
- Code = code; |
- return result; |
- } |
- |
- UInt32 DecodeBit(UInt32 size0, UInt32 numTotalBits) |
- { |
- UInt32 newBound = (Range >> numTotalBits) * size0; |
- UInt32 symbol; |
- if (Code < newBound) |
- { |
- symbol = 0; |
- Range = newBound; |
- } |
- else |
- { |
- symbol = 1; |
- Code -= newBound; |
- Range -= newBound; |
- } |
- Normalize(); |
- return symbol; |
- } |
- |
- UInt64 GetProcessedSize() {return Stream.GetProcessedSize(); } |
-}; |
- |
-}} |
- |
-#endif |