File: SymbolKey.ComparisonOptions.cs
Web Access
Project: ..\..\..\src\Workspaces\Core\Portable\Microsoft.CodeAnalysis.Workspaces.csproj (Microsoft.CodeAnalysis.Workspaces)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System;
 
namespace Microsoft.CodeAnalysis
{
    internal partial struct SymbolKey
    {
        private readonly struct ComparisonOptions
        {
            [Flags]
            private enum Option : byte
            {
                None = 0x0,
                IgnoreCase = 0x1,
                IgnoreAssemblyKeys = 0x2,
            }
 
            private readonly Option _flags;
 
            public ComparisonOptions(bool ignoreCase, bool ignoreAssemblyKeys)
            {
                _flags =
                    BoolToOption(ignoreCase, Option.IgnoreCase) |
                    BoolToOption(ignoreAssemblyKeys, Option.IgnoreAssemblyKeys);
            }
 
            public bool IgnoreCase => (_flags & Option.IgnoreCase) == Option.IgnoreCase;
 
            public bool IgnoreAssemblyKey => (_flags & Option.IgnoreAssemblyKeys) == Option.IgnoreAssemblyKeys;
 
            public byte FlagsValue => (byte)_flags;
 
            private static Option BoolToOption(bool value, Option option)
                => value ? option : Option.None;
        }
    }
}