File: Contracts\FeatureFlags_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.

namespace Microsoft.Diagnostics.DataContractReader.Contracts;

internal readonly struct FeatureFlags_1 : IFeatureFlags
{
    private readonly Target _target;

    public FeatureFlags_1(Target target)
    {
        _target = target;
    }

    bool IFeatureFlags.IsEnabled(RuntimeFeature feature)
    {
        string? globalName = feature switch
        {
            RuntimeFeature.COMInterop => Constants.Globals.FeatureCOMInterop,
            RuntimeFeature.ComWrappers => Constants.Globals.FeatureComWrappers,
            RuntimeFeature.ObjCMarshal => Constants.Globals.FeatureObjCMarshal,
            RuntimeFeature.JavaMarshal => Constants.Globals.FeatureJavaMarshal,
            RuntimeFeature.OnStackReplacement => Constants.Globals.FeatureOnStackReplacement,
            RuntimeFeature.PortableEntrypoints => Constants.Globals.FeaturePortableEntrypoints,
            RuntimeFeature.Webcil => Constants.Globals.FeatureWebcil,
            _ => null,
        };
        return globalName is not null
            && _target.TryReadGlobal<byte>(globalName, out byte? value)
            && value != 0;
    }
}