/// <summary> /// Creates a handle from a token value. /// </summary> /// <exception cref="ArgumentException"> /// <paramref name="token"/> is not a valid metadata token. /// It must encode a metadata table entity or an offset in <see cref="HandleKind.UserString"/> heap. /// </exception> public static Handle Handle(int token) { if (!TokenTypeIds.IsEcmaToken(unchecked ((uint)token))) { ThrowInvalidToken(); } return(new Handle((uint)token)); }
/// <summary> /// Creates an entity handle from a token value. /// </summary> /// <exception cref="ArgumentException"><paramref name="token"/> is not a valid metadata entity token.</exception> public static EntityHandle EntityHandle(int token) { if (!TokenTypeIds.IsEntityToken(unchecked ((uint)token))) { ThrowInvalidToken(); } return(new EntityHandle((uint)token)); }
/// <summary> /// Creates a handle from a token value. /// </summary> /// <exception cref="ArgumentException"> /// <paramref name="token"/> is not a valid metadata token. /// It must encode a metadata table entity or an offset in <see cref="HandleKind.UserString"/> heap. /// </exception> public static Handle Handle(int token) { if (!TokenTypeIds.IsEntityOrUserStringToken(unchecked ((uint)token))) { ThrowInvalidToken(); } return(Metadata.Handle.FromVToken((uint)token)); }
/// <summary> /// Creates a handle from a token value. /// </summary> /// <exception cref="ArgumentException"> /// <paramref name="tableIndex"/> is not a valid table index.</exception> public static EntityHandle Handle(TableIndex tableIndex, int rowNumber) { int token = ((int)tableIndex << TokenTypeIds.RowIdBitCount) | rowNumber; if (!TokenTypeIds.IsEntityOrUserStringToken(unchecked ((uint)token))) { ThrowInvalidTableIndex(); } return(new EntityHandle((uint)token)); }
/// <summary> /// Returns the metadata token of the specified <paramref name="handle"/> in the context of <paramref name="reader"/>. /// </summary> /// <returns>Metadata token.</returns> /// <exception cref="ArgumentException"> /// Handle represents a metadata entity that doesn't have a token. /// A token can only be retrieved for a metadata table handle or a heap handle of type <see cref="HandleKind.UserString"/>. /// </exception> public static int GetToken(this MetadataReader reader, Handle handle) { if (!TokenTypeIds.IsEcmaToken(handle.value)) { ThrowTableHandleOrUserStringRequired(); } if (handle.IsVirtual) { return(MapVirtualHandleRowId(reader, handle) | (int)(handle.value & TokenTypeIds.TokenTypeMask)); } return((int)handle.value); }
/// <summary> /// Returns the metadata token of the specified <paramref name="handle"/>. /// </summary> /// <returns> /// Metadata token, or 0 if <paramref name="handle"/> can only be interpreted in a context of a specific <see cref="MetadataReader"/>. /// See <see cref="GetToken(MetadataReader, Handle)"/>. /// </returns> /// <exception cref="ArgumentException"> /// Handle represents a metadata entity that doesn't have a token. /// A token can only be retrieved for a metadata table handle or a heap handle of type <see cref="HandleKind.UserString"/>. /// </exception> public static int GetToken(Handle handle) { if (!TokenTypeIds.IsEcmaToken(handle.value)) { ThrowTableHandleOrUserStringRequired(); } if (handle.IsVirtual) { return(0); } return((int)handle.value); }