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

◆ MakeRoom()

void System.Text.StringBuilder.MakeRoom ( int index,
int count,
out StringBuilder chunk,
out int indexInChunk,
bool doNotMoveFollowingChars )
inlineprivate

Definition at line 2155 of file StringBuilder.cs.

2156 {
2157 if (count + Length > m_MaxCapacity || count + Length < count)
2158 {
2159 throw new ArgumentOutOfRangeException("requiredLength", SR.ArgumentOutOfRange_SmallCapacity);
2160 }
2161 chunk = this;
2162 while (chunk.m_ChunkOffset > index)
2163 {
2165 chunk = chunk.m_ChunkPrevious;
2166 }
2167 indexInChunk = index - chunk.m_ChunkOffset;
2168 if (!doNotMoveFollowingChars && chunk.m_ChunkLength <= 32 && chunk.m_ChunkChars.Length - chunk.m_ChunkLength >= count)
2169 {
2170 int num = chunk.m_ChunkLength;
2171 while (num > indexInChunk)
2172 {
2173 num--;
2174 chunk.m_ChunkChars[num + count] = chunk.m_ChunkChars[num];
2175 }
2177 return;
2178 }
2179 StringBuilder stringBuilder = new StringBuilder(Math.Max(count, 16), chunk.m_MaxCapacity, chunk.m_ChunkPrevious);
2181 int num2 = Math.Min(count, indexInChunk);
2182 if (num2 > 0)
2183 {
2184 new ReadOnlySpan<char>(chunk.m_ChunkChars, 0, num2).CopyTo(stringBuilder.m_ChunkChars);
2185 int num3 = indexInChunk - num2;
2186 if (num3 >= 0)
2187 {
2188 new ReadOnlySpan<char>(chunk.m_ChunkChars, num2, num3).CopyTo(chunk.m_ChunkChars);
2190 }
2191 }
2194 if (num2 < count)
2195 {
2198 }
2199 }
void CopyTo(KeyValuePair< TKey, TValue >[] array, int index)

References System.Text.StringBuilder.StringBuilder(), System.SR.ArgumentOutOfRange_SmallCapacity, System.Collections.Generic.Dictionary< TKey, TValue >.CopyTo(), System.count, System.Runtime.Serialization.Dictionary, System.index, System.Text.StringBuilder.Length, System.Text.StringBuilder.m_MaxCapacity, System.Math.Max(), and System.Math.Min().

Referenced by System.Text.StringBuilder.Insert(), System.Text.StringBuilder.Insert(), and System.Text.StringBuilder.ReplaceAllInChunk().