aboutsummaryrefslogtreecommitdiff
path: root/lib/UnrarXLib/coder.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/UnrarXLib/coder.hpp')
-rw-r--r--lib/UnrarXLib/coder.hpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/UnrarXLib/coder.hpp b/lib/UnrarXLib/coder.hpp
new file mode 100644
index 0000000000..f09f911c09
--- /dev/null
+++ b/lib/UnrarXLib/coder.hpp
@@ -0,0 +1,24 @@
+/****************************************************************************
+ * Contents: 'Carryless rangecoder' by Dmitry Subbotin *
+ ****************************************************************************/
+
+const uint TOP=1 << 24, BOT=1 << 15;
+
+class RangeCoder
+{
+ public:
+ void InitDecoder(Unpack *UnpackRead);
+ inline int GetCurrentCount();
+ inline uint GetCurrentShiftCount(uint SHIFT);
+ inline void Decode();
+ inline void PutChar(unsigned int c);
+ inline unsigned int GetChar();
+
+ uint low, code, range;
+ struct SUBRANGE
+ {
+ uint LowCount, HighCount, scale;
+ } SubRange;
+
+ Unpack *UnpackRead;
+};