Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
HWStack.cs
Go to the documentation of this file.
1namespace System.Xml;
2
3internal sealed class HWStack : ICloneable
4{
5 private object[] _stack;
6
7 private readonly int _growthRate;
8
9 private int _used;
10
11 private int _size;
12
13 private readonly int _limit;
14
15 internal object this[int index]
16 {
17 get
18 {
19 if (index >= 0 && index < _used)
20 {
21 return _stack[index];
22 }
23 throw new IndexOutOfRangeException();
24 }
25 set
26 {
27 if (index >= 0 && index < _used)
28 {
30 return;
31 }
32 throw new IndexOutOfRangeException();
33 }
34 }
35
36 internal int Length => _used;
37
38 internal HWStack(int GrowthRate)
39 : this(GrowthRate, int.MaxValue)
40 {
41 }
42
43 internal HWStack(int GrowthRate, int limit)
44 {
46 _used = 0;
47 _stack = new object[GrowthRate];
49 _limit = limit;
50 }
51
52 internal object Push()
53 {
54 if (_used == _size)
55 {
56 if (_limit <= _used)
57 {
58 throw new XmlException(System.SR.Xml_StackOverflow, string.Empty);
59 }
60 object[] array = new object[_size + _growthRate];
61 if (_used > 0)
62 {
64 }
65 _stack = array;
67 }
68 return _stack[_used++];
69 }
70
71 internal object Pop()
72 {
73 if (0 < _used)
74 {
75 _used--;
76 return _stack[_used];
77 }
78 return null;
79 }
80
81 internal object Peek()
82 {
83 if (_used <= 0)
84 {
85 return null;
86 }
87 return _stack[_used - 1];
88 }
89
90 internal void AddToTop(object o)
91 {
92 if (_used > 0)
93 {
94 _stack[_used - 1] = o;
95 }
96 }
97
98 private HWStack(object[] stack, int growthRate, int used, int size)
99 {
100 _stack = stack;
102 _used = used;
103 _size = size;
104 }
105
106 public object Clone()
107 {
108 return new HWStack((object[])_stack.Clone(), _growthRate, _used, _size);
109 }
110}
static unsafe void Copy(Array sourceArray, Array destinationArray, int length)
Definition Array.cs:624
static string Xml_StackOverflow
Definition SR.cs:22
Definition SR.cs:7
object[] _stack
Definition HWStack.cs:5
readonly int _growthRate
Definition HWStack.cs:7
HWStack(int GrowthRate)
Definition HWStack.cs:38
void AddToTop(object o)
Definition HWStack.cs:90
object Push()
Definition HWStack.cs:52
object Peek()
Definition HWStack.cs:81
readonly int _limit
Definition HWStack.cs:13
HWStack(int GrowthRate, int limit)
Definition HWStack.cs:43
HWStack(object[] stack, int growthRate, int used, int size)
Definition HWStack.cs:98