| File: System\Reflection\Runtime\General\QHandles.NativeFormat.cs | Web Access |
| Project: src\runtime\src\coreclr\nativeaot\System.Private.CoreLib\src\System.Private.CoreLib.csproj (System.Private.CoreLib) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // Collection of "qualified handle" tuples. // using System; using System.Collections.Generic; using System.Diagnostics; using Internal.Metadata.NativeFormat; using Internal.Runtime.TypeLoader; namespace System.Reflection.Runtime.General { public partial struct QMethodDefinition { public QMethodDefinition(MetadataReader reader, MethodHandle handle) { _reader = reader; _handle = ((Handle)handle).AsInt(); } public MetadataReader NativeFormatReader { get { Debug.Assert(IsNativeFormatMetadataBased); return _reader as MetadataReader; } } public MethodHandle NativeFormatHandle { get { Debug.Assert(IsNativeFormatMetadataBased); return _handle.AsHandle().ToMethodHandle(NativeFormatReader); } } public bool IsNativeFormatMetadataBased { get { return (_reader != null) && _reader is global::Internal.Metadata.NativeFormat.MetadataReader; } } } public partial struct QTypeDefinition { public QTypeDefinition(MetadataReader reader, TypeDefinitionHandle handle) { _reader = reader; _handle = ((Handle)handle).AsInt(); } public MetadataReader NativeFormatReader { get { Debug.Assert(IsNativeFormatMetadataBased); return _reader as MetadataReader; } } public TypeDefinitionHandle NativeFormatHandle { get { Debug.Assert(IsNativeFormatMetadataBased); return _handle.AsHandle().ToTypeDefinitionHandle(NativeFormatReader); } } public bool IsNativeFormatMetadataBased { get { return (_reader != null) && _reader is global::Internal.Metadata.NativeFormat.MetadataReader; } } } public partial struct QTypeDefRefOrSpec { public QTypeDefRefOrSpec(MetadataReader reader, Handle handle, bool skipCheck = false) { if (!skipCheck) { if (!handle.IsTypeDefRefOrSpecHandle(reader)) throw new BadImageFormatException(); } Debug.Assert(handle.IsTypeDefRefOrSpecHandle(reader)); _reader = reader; _handle = handle.ToIntToken(); } public bool IsNativeFormatMetadataBased { get { return (_reader != null) && Reader is global::Internal.Metadata.NativeFormat.MetadataReader; } } public bool IsTypeDefinition { get { return _handle.AsHandle().HandleType == HandleType.TypeDefinition; } } public QTypeDefinition ToTypeDefinition() { var reader = (MetadataReader)_reader; return new QTypeDefinition(reader, _handle.AsHandle().ToTypeDefinitionHandle(reader)); } } }