Merge pull request #4324 from FernetMenta/wasapi
[vuplus_xbmc] / lib / UnrarXLib / getbits.hpp
1 #ifndef _RAR_GETBITS_
2 #define _RAR_GETBITS_
3
4 class BitInput
5 {
6   public:
7     enum BufferSize {MAX_SIZE=0x8000};
8   protected:
9     int InAddr,InBit;
10   public:
11     BitInput();
12     ~BitInput();
13
14     byte *InBuf;
15
16     void InitBitInput()
17     {
18       InAddr=InBit=0;
19     }
20     void addbits(int Bits)
21     {
22       Bits+=InBit;
23       InAddr+=Bits>>3;
24       InBit=Bits&7;
25     }
26     unsigned int getbits()
27     {
28       unsigned int BitField=(uint)InBuf[InAddr] << 16;
29       BitField|=(uint)InBuf[InAddr+1] << 8;
30       BitField|=(uint)InBuf[InAddr+2];
31       BitField >>= (8-InBit);
32       return(BitField & 0xffff);
33     }
34     void faddbits(int Bits);
35     unsigned int fgetbits();
36 };
37 #endif