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

◆ ShiftLeft()

void System.Xml.Xsl.XPathConvert.BigInteger.ShiftLeft ( int cbit)
inline

Definition at line 1057 of file XPathConvert.cs.

1058 {
1059 if (cbit == 0 || _length == 0)
1060 {
1061 return;
1062 }
1063 int num = cbit >> 5;
1064 cbit &= 0x1F;
1065 uint num3;
1066 int num2;
1067 if (cbit > 0)
1068 {
1069 num2 = _length - 1;
1070 num3 = _digits[num2] >> 32 - cbit;
1071 while (true)
1072 {
1073 _digits[num2] <<= cbit;
1074 if (num2 == 0)
1075 {
1076 break;
1077 }
1078 _digits[num2] |= _digits[num2 - 1] >> 32 - cbit;
1079 num2--;
1080 }
1081 }
1082 else
1083 {
1084 num3 = 0u;
1085 }
1086 if (num <= 0 && num3 == 0)
1087 {
1088 return;
1089 }
1090 num2 = _length + ((num3 != 0) ? 1 : 0) + num;
1091 Ensure(num2);
1092 if (num > 0)
1093 {
1094 int length = _length;
1095 while (length-- != 0)
1096 {
1097 _digits[num + length] = _digits[length];
1098 }
1099 for (int i = 0; i < num; i++)
1100 {
1101 _digits[i] = 0u;
1102 }
1103 _length += num;
1104 }
1105 if (num3 != 0)
1106 {
1107 _digits[_length++] = num3;
1108 }
1109 }

References System.Xml.Xsl.XPathConvert.BigInteger._digits, System.Xml.Xsl.XPathConvert.BigInteger._length, System.Xml.Dictionary, System.Xml.Xsl.XPathConvert.BigInteger.Ensure(), and System.length.