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

◆ GetGenerationHandle()

Handle System.Reflection.Metadata.Ecma335.MetadataAggregator.GetGenerationHandle ( Handle handle,
out int generation )
inline

Definition at line 184 of file MetadataAggregator.cs.

185 {
186 if (handle.IsVirtual)
187 {
188 throw new NotSupportedException();
189 }
190 if (handle.IsHeapHandle)
191 {
192 int offset = handle.Offset;
193 MetadataTokens.TryGetHeapIndex(handle.Kind, out var index);
195 int num = ((handle.Type == 114) ? (offset - 1) : offset);
196 generation = array.BinarySearch(num);
197 if (generation >= 0)
198 {
199 do
200 {
201 generation++;
202 }
203 while (generation < array.Length && array[generation] == num);
204 }
205 else
206 {
208 }
209 if (generation >= array.Length)
210 {
212 }
213 int value = ((handle.Type == 114 || generation == 0) ? offset : (offset - array[generation - 1]));
214 return new Handle((byte)handle.Type, value);
215 }
216 int rowId = handle.RowId;
218 generation = array2.BinarySearch(new RowCounts
219 {
220 AggregateInserts = rowId
221 });
222 if (generation >= 0)
223 {
224 while (generation > 0 && array2[generation - 1].AggregateInserts == rowId)
225 {
226 generation--;
227 }
228 }
229 else
230 {
232 if (generation >= array2.Length)
233 {
235 }
236 }
237 int value2 = ((generation == 0) ? rowId : (rowId - array2[generation - 1].AggregateInserts + array2[generation].Updates));
238 return new Handle((byte)handle.Type, value2);
239 }
readonly ImmutableArray< ImmutableArray< RowCounts > > _rowCounts
readonly ImmutableArray< ImmutableArray< int > > _heapSizes
static string HandleBelongsToFutureGeneration
Definition SR.cs:140
Definition SR.cs:7

References System.Reflection.Metadata.Ecma335.MetadataAggregator._heapSizes, System.Reflection.Metadata.Ecma335.MetadataAggregator._rowCounts, System.array, System.handle, System.SR.HandleBelongsToFutureGeneration, System.index, System.offset, System.Reflection.Metadata.Ecma335.MetadataTokens.TryGetHeapIndex(), and System.value.