Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
BitStack.cs
Go to the documentation of this file.
1namespace System.Xml;
2
3internal sealed class BitStack
4{
5 private uint[] _bitStack;
6
7 private int _stackPos;
8
9 private uint _curr;
10
11 public BitStack()
12 {
13 _curr = 1u;
14 }
15
16 public void PushBit(bool bit)
17 {
18 if ((_curr & 0x80000000u) != 0)
19 {
20 PushCurr();
21 }
22 _curr = (_curr << 1) | (bit ? 1u : 0u);
23 }
24
25 public bool PopBit()
26 {
27 bool result = (_curr & 1) != 0;
28 _curr >>= 1;
29 if (_curr == 1)
30 {
31 PopCurr();
32 }
33 return result;
34 }
35
36 public bool PeekBit()
37 {
38 return (_curr & 1) != 0;
39 }
40
41 private void PushCurr()
42 {
43 if (_bitStack == null)
44 {
45 _bitStack = new uint[16];
46 }
48 _curr = 1u;
49 int num = _bitStack.Length;
50 if (_stackPos >= num)
51 {
52 uint[] array = new uint[2 * num];
55 }
56 }
57
58 private void PopCurr()
59 {
60 if (_stackPos > 0)
61 {
63 }
64 }
65}
static unsafe void Copy(Array sourceArray, Array destinationArray, int length)
Definition Array.cs:624
void PushBit(bool bit)
Definition BitStack.cs:16