File: Contracts\PlatformMetadata_1.cs
Web Access
Project: src\runtime\src\native\managed\cdac\Microsoft.Diagnostics.DataContractReader.Contracts\Microsoft.Diagnostics.DataContractReader.Contracts.csproj (Microsoft.Diagnostics.DataContractReader.Contracts)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;

namespace Microsoft.Diagnostics.DataContractReader.Contracts;

internal readonly struct PlatformMetadata_1 : IPlatformMetadata
{
    internal readonly Target _target;
    private readonly TargetPointer _cdacMetadataAddress;
    private Data.PlatformMetadata _cdacMetadata
        => _target.ProcessedData.GetOrAdd<Data.PlatformMetadata>(_cdacMetadataAddress);

    public PlatformMetadata_1(Target target)
    {
        _target = target;
        _cdacMetadataAddress = target.ReadGlobalPointer(Constants.Globals.PlatformMetadata);
    }

    TargetPointer IPlatformMetadata.GetPrecodeMachineDescriptor()
    {
        return _cdacMetadata.PrecodeMachineDescriptor;
    }

    CodePointerFlags IPlatformMetadata.GetCodePointerFlags()
    {
        return (CodePointerFlags)_cdacMetadata.CodePointerFlags;
    }
}