Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetNextSymbol()

int System.IO.Compression.HuffmanTree.GetNextSymbol ( InputBuffer input)
inline

Definition at line 168 of file HuffmanTree.cs.

169 {
170 uint num = input.TryLoad16Bits();
171 if (input.AvailableBits == 0)
172 {
173 return -1;
174 }
175 int num2 = _table[num & _tableMask];
176 if (num2 < 0)
177 {
178 uint num3 = (uint)(1 << _tableBits);
179 do
180 {
181 num2 = -num2;
182 num2 = (((num & num3) != 0) ? _right[num2] : _left[num2]);
183 num3 <<= 1;
184 }
185 while (num2 < 0);
186 }
187 int num4 = _codeLengthArray[num2];
188 if (num4 <= 0)
189 {
190 throw new InvalidDataException(System.SR.InvalidHuffmanData);
191 }
192 if (num4 > input.AvailableBits)
193 {
194 return -1;
195 }
196 input.SkipBits(num4);
197 return num2;
198 }
static string InvalidHuffmanData
Definition SR.cs:26
Definition SR.cs:7

References System.IO.Compression.HuffmanTree._codeLengthArray, System.IO.Compression.HuffmanTree._left, System.IO.Compression.HuffmanTree._right, System.IO.Compression.HuffmanTree._table, System.IO.Compression.HuffmanTree._tableBits, System.IO.Compression.HuffmanTree._tableMask, System.input, and System.SR.InvalidHuffmanData.

Referenced by System.IO.Compression.InflaterManaged.DecodeBlock(), and System.IO.Compression.InflaterManaged.DecodeDynamicBlockHeader().