1 #pragma once
2 
3 #include "../UnBitArrayBase.h"
4 
5 namespace APE
6 {
7 
8 class IAPEDecompress;
9 
10 // decodes 0000 up to and including 3890
11 class CUnBitArrayOld : public CUnBitArrayBase
12 {
13 public:
14     // construction/destruction
15     CUnBitArrayOld(IAPEDecompress * pAPEDecompress, intn nVersion, intn nFurthestReadByte);
16     ~CUnBitArrayOld();
17 
18     // functions
19     void GenerateArray(int * pOutputArray, int nElements, intn nBytesRequired = -1);
20     unsigned int DecodeValue(DECODE_VALUE_METHOD DecodeMethod, int nParam1 = 0, int nParam2 = 0);
21 
22 private:
23 	// helpers
24     void GenerateArrayOld(int * pOutputArray, uint32 NumberOfElements, int MinimumBitArrayBytes);
25     void GenerateArrayRice(int * pOutputArray, uint32 NumberOfElements, int MinimumBitArrayBytes);
26     uint32 DecodeValueRiceUnsigned(uint32 k);
27 
28     // data
29     uint32 k;
30     uint32 K_Sum;
31     uint32 m_nRefillBitThreshold;
32 
33     // functions
34     __forceinline int DecodeValueNew(bool bCapOverflow);
35     uint32 GetBitsRemaining();
36     __forceinline uint32 Get_K(uint32 x);
37 };
38 
39 }