< Summary

Line coverage
0%
Covered lines: 0
Uncovered lines: 217
Coverable lines: 217
Total lines: 527
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 52
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.cctor()100%110%
GetRowNumber(...)0%220%
GetHeapOffset(...)0%440%
GetToken(...)0%220%
GetToken(...)0%440%
MapVirtualHandleRowId(...)0%660%
GetRowNumber(...)0%220%
GetHeapOffset(...)0%440%
GetHeapOffset(...)0%220%
GetHeapOffset(...)100%110%
GetHeapOffset(...)100%110%
GetHeapOffset(...)0%220%
GetToken(...)0%440%
GetToken(...)0%220%
TryGetTableIndex(...)0%440%
TryGetHeapIndex(...)0%880%
Handle(...)0%220%
EntityHandle(...)0%220%
EntityHandle(...)100%110%
Handle(...)0%220%
ToRowId(...)100%110%
MethodDefinitionHandle(...)100%110%
MethodImplementationHandle(...)100%110%
MethodSpecificationHandle(...)100%110%
TypeDefinitionHandle(...)100%110%
ExportedTypeHandle(...)100%110%
TypeReferenceHandle(...)100%110%
TypeSpecificationHandle(...)100%110%
InterfaceImplementationHandle(...)100%110%
MemberReferenceHandle(...)100%110%
FieldDefinitionHandle(...)100%110%
EventDefinitionHandle(...)100%110%
PropertyDefinitionHandle(...)100%110%
StandaloneSignatureHandle(...)100%110%
ParameterHandle(...)100%110%
GenericParameterHandle(...)100%110%
GenericParameterConstraintHandle(...)100%110%
ModuleReferenceHandle(...)100%110%
AssemblyReferenceHandle(...)100%110%
CustomAttributeHandle(...)100%110%
DeclarativeSecurityAttributeHandle(...)100%110%
ConstantHandle(...)100%110%
ManifestResourceHandle(...)100%110%
AssemblyFileHandle(...)100%110%
DocumentHandle(...)100%110%
MethodDebugInformationHandle(...)100%110%
LocalScopeHandle(...)100%110%
LocalVariableHandle(...)100%110%
LocalConstantHandle(...)100%110%
ImportScopeHandle(...)100%110%
CustomDebugInformationHandle(...)100%110%
UserStringHandle(...)100%110%
StringHandle(...)100%110%
BlobHandle(...)100%110%
GuidHandle(...)100%110%
DocumentNameBlobHandle(...)100%110%

File(s)

https://raw.githubusercontent.com/dotnet/runtime/811a7eabb75c42db53440e8ba3f60c07511cfd1f/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataTokens.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4namespace System.Reflection.Metadata.Ecma335
 5{
 6    public static class MetadataTokens
 7    {
 8        /// <summary>
 9        /// Maximum number of tables that can be present in Ecma335 metadata.
 10        /// </summary>
 011        public static readonly int TableCount = 64; // headers use 64bit table masks
 12
 13        /// <summary>
 14        /// Maximum number of tables that can be present in Ecma335 metadata.
 15        /// </summary>
 016        public static readonly int HeapCount = HeapIndexExtensions.Count;
 17
 18        /// <summary>
 19        /// Returns the row number of a metadata table entry that corresponds
 20        /// to the specified <paramref name="handle"/> in the context of <paramref name="reader"/>.
 21        /// </summary>
 22        /// <returns>One based row number.</returns>
 23        /// <exception cref="ArgumentException">The <paramref name="handle"/> is not a valid metadata table handle.</exc
 24        public static int GetRowNumber(this MetadataReader reader, EntityHandle handle)
 025        {
 026            if (handle.IsVirtual)
 027            {
 028                return MapVirtualHandleRowId(reader, handle);
 29            }
 30
 031            return handle.RowId;
 032        }
 33
 34        /// <summary>
 35        /// Returns the offset of metadata heap data that corresponds
 36        /// to the specified <paramref name="handle"/> in the context of <paramref name="reader"/>.
 37        /// </summary>
 38        /// <returns>Zero based offset, or -1 if <paramref name="handle"/> isn't a metadata heap handle.</returns>
 39        /// <exception cref="NotSupportedException">The operation is not supported for the specified <paramref name="han
 40        /// <exception cref="ArgumentException">The <paramref name="handle"/> is invalid.</exception>
 41        public static int GetHeapOffset(this MetadataReader reader, Handle handle)
 042        {
 043            if (!handle.IsHeapHandle)
 044            {
 045                Throw.HeapHandleRequired();
 46            }
 47
 048            if (handle.IsVirtual)
 049            {
 050                return MapVirtualHandleRowId(reader, handle);
 51            }
 52
 053            return handle.Offset;
 054        }
 55
 56        /// <summary>
 57        /// Returns the metadata token of the specified <paramref name="handle"/> in the context of <paramref name="read
 58        /// </summary>
 59        /// <returns>Metadata token.</returns>
 60        /// <exception cref="NotSupportedException">The operation is not supported for the specified <paramref name="han
 61        public static int GetToken(this MetadataReader reader, EntityHandle handle)
 062        {
 063            if (handle.IsVirtual)
 064            {
 065                return (int)handle.Type | MapVirtualHandleRowId(reader, handle);
 66            }
 67
 068            return handle.Token;
 069        }
 70
 71        /// <summary>
 72        /// Returns the metadata token of the specified <paramref name="handle"/> in the context of <paramref name="read
 73        /// </summary>
 74        /// <returns>Metadata token.</returns>
 75        /// <exception cref="ArgumentException">
 76        /// Handle represents a metadata entity that doesn't have a token.
 77        /// A token can only be retrieved for a metadata table handle or a heap handle of type <see cref="HandleKind.Use
 78        /// </exception>
 79        /// <exception cref="NotSupportedException">The operation is not supported for the specified <paramref name="han
 80        public static int GetToken(this MetadataReader reader, Handle handle)
 081        {
 082            if (!handle.IsEntityOrUserStringHandle)
 083            {
 084                Throw.EntityOrUserStringHandleRequired();
 85            }
 86
 087            if (handle.IsVirtual)
 088            {
 089                return (int)handle.EntityHandleType | MapVirtualHandleRowId(reader, handle);
 90            }
 91
 092            return handle.Token;
 093        }
 94
 95        private static int MapVirtualHandleRowId(MetadataReader reader, Handle handle)
 096        {
 097            switch (handle.Kind)
 98            {
 99                case HandleKind.AssemblyReference:
 100                    // pretend that virtual rows immediately follow real rows:
 0101                    return reader.AssemblyRefTable.NumberOfNonVirtualRows + 1 + handle.RowId;
 102
 103                case HandleKind.String:
 104                case HandleKind.Blob:
 105                    // We could precalculate offsets for virtual strings and blobs as we are creating them
 106                    // if we wanted to implement this.
 0107                    throw new NotSupportedException(SR.CantGetOffsetForVirtualHeapHandle);
 108
 109                default:
 0110                    Throw.InvalidArgument_UnexpectedHandleKind(handle.Kind);
 111                    return 0;
 112            }
 0113        }
 114
 115        /// <summary>
 116        /// Returns the row number of a metadata table entry that corresponds
 117        /// to the specified <paramref name="handle"/>.
 118        /// </summary>
 119        /// <returns>
 120        /// One based row number, or -1 if <paramref name="handle"/> can only be interpreted in a context of a specific 
 121        /// See <see cref="GetRowNumber(MetadataReader, EntityHandle)"/>.
 122        /// </returns>
 123        public static int GetRowNumber(EntityHandle handle)
 0124        {
 0125            return handle.IsVirtual ? -1 : handle.RowId;
 0126        }
 127
 128        /// <summary>
 129        /// Returns the offset of metadata heap data that corresponds
 130        /// to the specified <paramref name="handle"/>.
 131        /// </summary>
 132        /// <returns>
 133        /// An offset in the corresponding heap, or -1 if <paramref name="handle"/> can only be interpreted in a context
 134        /// See <see cref="GetHeapOffset(MetadataReader, Handle)"/>.
 135        /// </returns>
 136        public static int GetHeapOffset(Handle handle)
 0137        {
 0138            if (!handle.IsHeapHandle)
 0139            {
 0140                Throw.HeapHandleRequired();
 141            }
 142
 0143            if (handle.IsVirtual)
 0144            {
 0145                return -1;
 146            }
 147
 0148            return handle.Offset;
 0149        }
 150
 151        /// <summary>
 152        /// Returns the offset of metadata heap data that corresponds
 153        /// to the specified <paramref name="handle"/>.
 154        /// </summary>
 155        /// <returns>
 156        /// Zero based offset, or -1 if <paramref name="handle"/> can only be interpreted in a context of a specific <se
 157        /// See <see cref="GetHeapOffset(MetadataReader, Handle)"/>.
 158        /// </returns>
 0159        public static int GetHeapOffset(BlobHandle handle) => handle.IsVirtual ? -1 : handle.GetHeapOffset();
 160
 161        /// <summary>
 162        /// Returns the offset of metadata heap data that corresponds
 163        /// to the specified <paramref name="handle"/>.
 164        /// </summary>
 165        /// <returns>
 166        /// 1-based index into the #Guid heap. Unlike other heaps, which are essentially byte arrays, the #Guid heap is 
 167        /// </returns>
 0168        public static int GetHeapOffset(GuidHandle handle) => handle.Index;
 169
 170        /// <summary>
 171        /// Returns the offset of metadata heap data that corresponds
 172        /// to the specified <paramref name="handle"/>.
 173        /// </summary>
 174        /// <returns>
 175        /// Zero based offset.
 176        /// </returns>
 0177        public static int GetHeapOffset(UserStringHandle handle) => handle.GetHeapOffset();
 178
 179        /// <summary>
 180        /// Returns the offset of metadata heap data that corresponds
 181        /// to the specified <paramref name="handle"/>.
 182        /// </summary>
 183        /// <returns>
 184        /// Zero based offset, or -1 if <paramref name="handle"/> can only be interpreted in a context of a specific <se
 185        /// See <see cref="GetHeapOffset(MetadataReader, Handle)"/>.
 186        /// </returns>
 0187        public static int GetHeapOffset(StringHandle handle) => handle.IsVirtual ? -1 : handle.GetHeapOffset();
 188
 189        /// <summary>
 190        /// Returns the metadata token of the specified <paramref name="handle"/>.
 191        /// </summary>
 192        /// <returns>
 193        /// Metadata token, or 0 if <paramref name="handle"/> can only be interpreted in a context of a specific <see cr
 194        /// See <see cref="GetToken(MetadataReader, Handle)"/>.
 195        /// </returns>
 196        /// <exception cref="ArgumentException">
 197        /// Handle represents a metadata entity that doesn't have a token.
 198        /// A token can only be retrieved for a metadata table handle or a heap handle of type <see cref="HandleKind.Use
 199        /// </exception>
 200        public static int GetToken(Handle handle)
 0201        {
 0202            if (!handle.IsEntityOrUserStringHandle)
 0203            {
 0204                Throw.EntityOrUserStringHandleRequired();
 205            }
 206
 0207            if (handle.IsVirtual)
 0208            {
 0209                return 0;
 210            }
 211
 0212            return handle.Token;
 0213        }
 214
 215        /// <summary>
 216        /// Returns the metadata token of the specified <paramref name="handle"/>.
 217        /// </summary>
 218        /// <returns>
 219        /// Metadata token, or 0 if <paramref name="handle"/> can only be interpreted in a context of a specific <see cr
 220        /// See <see cref="GetToken(MetadataReader, EntityHandle)"/>.
 221        /// </returns>
 222        public static int GetToken(EntityHandle handle)
 0223        {
 0224            return handle.IsVirtual ? 0 : handle.Token;
 0225        }
 226
 227        /// <summary>
 228        /// Gets the <see cref="TableIndex"/> of the table corresponding to the specified <see cref="HandleKind"/>.
 229        /// </summary>
 230        /// <param name="type">Handle type.</param>
 231        /// <param name="index">Table index.</param>
 232        /// <returns>True if the handle type corresponds to an Ecma335 or Portable PDB table, false otherwise.</returns>
 233        public static bool TryGetTableIndex(HandleKind type, out TableIndex index)
 0234        {
 235            // We don't have a HandleKind for PropertyMap, EventMap, MethodSemantics, *Ptr, AssemblyOS, etc. tables,
 236            // but one can get ahold of one by creating a handle from a token and getting its Kind.
 0237            if ((int)type < TableCount && ((1UL << (int)type) & (ulong)TableMask.AllTables) != 0)
 0238            {
 0239                index = (TableIndex)type;
 0240                return true;
 241            }
 242
 0243            index = 0;
 0244            return false;
 0245        }
 246
 247        /// <summary>
 248        /// Gets the <see cref="HeapIndex"/> of the heap corresponding to the specified <see cref="HandleKind"/>.
 249        /// </summary>
 250        /// <param name="type">Handle type.</param>
 251        /// <param name="index">Heap index.</param>
 252        /// <returns>True if the handle type corresponds to an Ecma335 heap, false otherwise.</returns>
 253        public static bool TryGetHeapIndex(HandleKind type, out HeapIndex index)
 0254        {
 0255            switch (type)
 256            {
 257                case HandleKind.UserString:
 0258                    index = HeapIndex.UserString;
 0259                    return true;
 260
 261                case HandleKind.String:
 262                case HandleKind.NamespaceDefinition:
 0263                    index = HeapIndex.String;
 0264                    return true;
 265
 266                case HandleKind.Blob:
 0267                    index = HeapIndex.Blob;
 0268                    return true;
 269
 270                case HandleKind.Guid:
 0271                    index = HeapIndex.Guid;
 0272                    return true;
 273
 274                default:
 0275                    index = 0;
 0276                    return false;
 277            }
 0278        }
 279
 280        #region Handle Factories
 281
 282        /// <summary>
 283        /// Creates a handle from a token value.
 284        /// </summary>
 285        /// <exception cref="ArgumentException">
 286        /// <paramref name="token"/> is not a valid metadata token.
 287        /// It must encode a metadata table entity or an offset in <see cref="HandleKind.UserString"/> heap.
 288        /// </exception>
 289        public static Handle Handle(int token)
 0290        {
 0291            if (!TokenTypeIds.IsEntityOrUserStringToken(unchecked((uint)token)))
 0292            {
 0293                Throw.InvalidToken();
 294            }
 295
 0296            return Metadata.Handle.FromVToken((uint)token);
 0297        }
 298
 299        /// <summary>
 300        /// Creates an entity handle from a token value.
 301        /// </summary>
 302        /// <exception cref="ArgumentException"><paramref name="token"/> is not a valid metadata entity token.</exceptio
 303        public static EntityHandle EntityHandle(int token)
 0304        {
 0305            if (!TokenTypeIds.IsEntityToken(unchecked((uint)token)))
 0306            {
 0307                Throw.InvalidToken();
 308            }
 309
 0310            return new EntityHandle((uint)token);
 0311        }
 312
 313        /// <summary>
 314        /// Creates an <see cref="Metadata.EntityHandle"/> from a token value.
 315        /// </summary>
 316        /// <exception cref="ArgumentException">
 317        /// <paramref name="tableIndex"/> is not a valid table index.</exception>
 318        public static EntityHandle EntityHandle(TableIndex tableIndex, int rowNumber)
 0319        {
 0320            return Handle(tableIndex, rowNumber);
 0321        }
 322
 323        /// <summary>
 324        /// Creates an <see cref="Metadata.EntityHandle"/> from a token value.
 325        /// </summary>
 326        /// <exception cref="ArgumentException">
 327        /// <paramref name="tableIndex"/> is not a valid table index.</exception>
 328        public static EntityHandle Handle(TableIndex tableIndex, int rowNumber)
 0329        {
 0330            int token = ((int)tableIndex << TokenTypeIds.RowIdBitCount) | rowNumber;
 331
 0332            if (!TokenTypeIds.IsEntityOrUserStringToken(unchecked((uint)token)))
 0333            {
 0334                Throw.TableIndexOutOfRange();
 335            }
 336
 0337            return new EntityHandle((uint)token);
 0338        }
 339
 340        private static int ToRowId(int rowNumber)
 0341        {
 0342            return rowNumber & (int)TokenTypeIds.RIDMask;
 0343        }
 344
 345        public static MethodDefinitionHandle MethodDefinitionHandle(int rowNumber)
 0346        {
 0347            return Metadata.MethodDefinitionHandle.FromRowId(ToRowId(rowNumber));
 0348        }
 349
 350        public static MethodImplementationHandle MethodImplementationHandle(int rowNumber)
 0351        {
 0352            return Metadata.MethodImplementationHandle.FromRowId(ToRowId(rowNumber));
 0353        }
 354
 355        public static MethodSpecificationHandle MethodSpecificationHandle(int rowNumber)
 0356        {
 0357            return Metadata.MethodSpecificationHandle.FromRowId(ToRowId(rowNumber));
 0358        }
 359
 360        public static TypeDefinitionHandle TypeDefinitionHandle(int rowNumber)
 0361        {
 0362            return Metadata.TypeDefinitionHandle.FromRowId(ToRowId(rowNumber));
 0363        }
 364
 365        public static ExportedTypeHandle ExportedTypeHandle(int rowNumber)
 0366        {
 0367            return Metadata.ExportedTypeHandle.FromRowId(ToRowId(rowNumber));
 0368        }
 369
 370        public static TypeReferenceHandle TypeReferenceHandle(int rowNumber)
 0371        {
 0372            return Metadata.TypeReferenceHandle.FromRowId(ToRowId(rowNumber));
 0373        }
 374
 375        public static TypeSpecificationHandle TypeSpecificationHandle(int rowNumber)
 0376        {
 0377            return Metadata.TypeSpecificationHandle.FromRowId(ToRowId(rowNumber));
 0378        }
 379
 380        public static InterfaceImplementationHandle InterfaceImplementationHandle(int rowNumber)
 0381        {
 0382            return Metadata.InterfaceImplementationHandle.FromRowId(ToRowId(rowNumber));
 0383        }
 384
 385        public static MemberReferenceHandle MemberReferenceHandle(int rowNumber)
 0386        {
 0387            return Metadata.MemberReferenceHandle.FromRowId(ToRowId(rowNumber));
 0388        }
 389
 390        public static FieldDefinitionHandle FieldDefinitionHandle(int rowNumber)
 0391        {
 0392            return Metadata.FieldDefinitionHandle.FromRowId(ToRowId(rowNumber));
 0393        }
 394
 395        public static EventDefinitionHandle EventDefinitionHandle(int rowNumber)
 0396        {
 0397            return Metadata.EventDefinitionHandle.FromRowId(ToRowId(rowNumber));
 0398        }
 399
 400        public static PropertyDefinitionHandle PropertyDefinitionHandle(int rowNumber)
 0401        {
 0402            return Metadata.PropertyDefinitionHandle.FromRowId(ToRowId(rowNumber));
 0403        }
 404
 405        public static StandaloneSignatureHandle StandaloneSignatureHandle(int rowNumber)
 0406        {
 0407            return Metadata.StandaloneSignatureHandle.FromRowId(ToRowId(rowNumber));
 0408        }
 409
 410        public static ParameterHandle ParameterHandle(int rowNumber)
 0411        {
 0412            return Metadata.ParameterHandle.FromRowId(ToRowId(rowNumber));
 0413        }
 414
 415        public static GenericParameterHandle GenericParameterHandle(int rowNumber)
 0416        {
 0417            return Metadata.GenericParameterHandle.FromRowId(ToRowId(rowNumber));
 0418        }
 419
 420        public static GenericParameterConstraintHandle GenericParameterConstraintHandle(int rowNumber)
 0421        {
 0422            return Metadata.GenericParameterConstraintHandle.FromRowId(ToRowId(rowNumber));
 0423        }
 424
 425        public static ModuleReferenceHandle ModuleReferenceHandle(int rowNumber)
 0426        {
 0427            return Metadata.ModuleReferenceHandle.FromRowId(ToRowId(rowNumber));
 0428        }
 429
 430        public static AssemblyReferenceHandle AssemblyReferenceHandle(int rowNumber)
 0431        {
 0432            return Metadata.AssemblyReferenceHandle.FromRowId(ToRowId(rowNumber));
 0433        }
 434
 435        public static CustomAttributeHandle CustomAttributeHandle(int rowNumber)
 0436        {
 0437            return Metadata.CustomAttributeHandle.FromRowId(ToRowId(rowNumber));
 0438        }
 439
 440        public static DeclarativeSecurityAttributeHandle DeclarativeSecurityAttributeHandle(int rowNumber)
 0441        {
 0442            return Metadata.DeclarativeSecurityAttributeHandle.FromRowId(ToRowId(rowNumber));
 0443        }
 444
 445        public static ConstantHandle ConstantHandle(int rowNumber)
 0446        {
 0447            return Metadata.ConstantHandle.FromRowId(ToRowId(rowNumber));
 0448        }
 449
 450        public static ManifestResourceHandle ManifestResourceHandle(int rowNumber)
 0451        {
 0452            return Metadata.ManifestResourceHandle.FromRowId(ToRowId(rowNumber));
 0453        }
 454
 455        public static AssemblyFileHandle AssemblyFileHandle(int rowNumber)
 0456        {
 0457            return Metadata.AssemblyFileHandle.FromRowId(ToRowId(rowNumber));
 0458        }
 459
 460        // debug
 461
 462        public static DocumentHandle DocumentHandle(int rowNumber)
 0463        {
 0464            return Metadata.DocumentHandle.FromRowId(ToRowId(rowNumber));
 0465        }
 466
 467        public static MethodDebugInformationHandle MethodDebugInformationHandle(int rowNumber)
 0468        {
 0469            return Metadata.MethodDebugInformationHandle.FromRowId(ToRowId(rowNumber));
 0470        }
 471
 472        public static LocalScopeHandle LocalScopeHandle(int rowNumber)
 0473        {
 0474            return Metadata.LocalScopeHandle.FromRowId(ToRowId(rowNumber));
 0475        }
 476
 477        public static LocalVariableHandle LocalVariableHandle(int rowNumber)
 0478        {
 0479            return Metadata.LocalVariableHandle.FromRowId(ToRowId(rowNumber));
 0480        }
 481
 482        public static LocalConstantHandle LocalConstantHandle(int rowNumber)
 0483        {
 0484            return Metadata.LocalConstantHandle.FromRowId(ToRowId(rowNumber));
 0485        }
 486
 487        public static ImportScopeHandle ImportScopeHandle(int rowNumber)
 0488        {
 0489            return Metadata.ImportScopeHandle.FromRowId(ToRowId(rowNumber));
 0490        }
 491
 492        public static CustomDebugInformationHandle CustomDebugInformationHandle(int rowNumber)
 0493        {
 0494            return Metadata.CustomDebugInformationHandle.FromRowId(ToRowId(rowNumber));
 0495        }
 496
 497        // heaps
 498
 499        public static UserStringHandle UserStringHandle(int offset)
 0500        {
 0501            return Metadata.UserStringHandle.FromOffset(offset & (int)TokenTypeIds.RIDMask);
 0502        }
 503
 504        public static StringHandle StringHandle(int offset)
 0505        {
 0506            return Metadata.StringHandle.FromOffset(offset);
 0507        }
 508
 509        public static BlobHandle BlobHandle(int offset)
 0510        {
 0511            return Metadata.BlobHandle.FromOffset(offset);
 0512        }
 513
 514        public static GuidHandle GuidHandle(int offset)
 0515        {
 0516            return Metadata.GuidHandle.FromIndex(offset);
 0517        }
 518
 519        public static DocumentNameBlobHandle DocumentNameBlobHandle(int offset)
 0520        {
 0521            return Metadata.DocumentNameBlobHandle.FromOffset(offset);
 0522        }
 523
 524        #endregion
 525    }
 526}
 527

Methods/Properties

.cctor()
GetRowNumber(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle)
GetHeapOffset(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.Handle)
GetToken(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle)
GetToken(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.Handle)
MapVirtualHandleRowId(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.Handle)
GetRowNumber(System.Reflection.Metadata.EntityHandle)
GetHeapOffset(System.Reflection.Metadata.Handle)
GetHeapOffset(System.Reflection.Metadata.BlobHandle)
GetHeapOffset(System.Reflection.Metadata.GuidHandle)
GetHeapOffset(System.Reflection.Metadata.UserStringHandle)
GetHeapOffset(System.Reflection.Metadata.StringHandle)
GetToken(System.Reflection.Metadata.Handle)
GetToken(System.Reflection.Metadata.EntityHandle)
TryGetTableIndex(System.Reflection.Metadata.HandleKind,System.Reflection.Metadata.Ecma335.TableIndex&)
TryGetHeapIndex(System.Reflection.Metadata.HandleKind,System.Reflection.Metadata.Ecma335.HeapIndex&)
Handle(System.Int32)
EntityHandle(System.Int32)
EntityHandle(System.Reflection.Metadata.Ecma335.TableIndex,System.Int32)
Handle(System.Reflection.Metadata.Ecma335.TableIndex,System.Int32)
ToRowId(System.Int32)
MethodDefinitionHandle(System.Int32)
MethodImplementationHandle(System.Int32)
MethodSpecificationHandle(System.Int32)
TypeDefinitionHandle(System.Int32)
ExportedTypeHandle(System.Int32)
TypeReferenceHandle(System.Int32)
TypeSpecificationHandle(System.Int32)
InterfaceImplementationHandle(System.Int32)
MemberReferenceHandle(System.Int32)
FieldDefinitionHandle(System.Int32)
EventDefinitionHandle(System.Int32)
PropertyDefinitionHandle(System.Int32)
StandaloneSignatureHandle(System.Int32)
ParameterHandle(System.Int32)
GenericParameterHandle(System.Int32)
GenericParameterConstraintHandle(System.Int32)
ModuleReferenceHandle(System.Int32)
AssemblyReferenceHandle(System.Int32)
CustomAttributeHandle(System.Int32)
DeclarativeSecurityAttributeHandle(System.Int32)
ConstantHandle(System.Int32)
ManifestResourceHandle(System.Int32)
AssemblyFileHandle(System.Int32)
DocumentHandle(System.Int32)
MethodDebugInformationHandle(System.Int32)
LocalScopeHandle(System.Int32)
LocalVariableHandle(System.Int32)
LocalConstantHandle(System.Int32)
ImportScopeHandle(System.Int32)
CustomDebugInformationHandle(System.Int32)
UserStringHandle(System.Int32)
StringHandle(System.Int32)
BlobHandle(System.Int32)
GuidHandle(System.Int32)
DocumentNameBlobHandle(System.Int32)