// 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; using System.Collections.Immutable; namespace Roslyn.Utilities; internal static class ComparerWithState { public static int CompareTo<T, S>(T first, T second, S state, ImmutableArray<Func<T, S, IComparable>> comparableMethods) { foreach (var comparableMethod in comparableMethods) { var comparison = comparableMethod(first, state).CompareTo(comparableMethod(second, state)); if (comparison != 0) { return comparison; } } return 0; } public static int CompareTo<T>(T first, T second, ImmutableArray<Func<T, IComparable>> comparableMethods) { foreach (var comparableMethod in comparableMethods) { var comparison = comparableMethod(first).CompareTo(comparableMethod(second)); if (comparison != 0) { return comparison; } } return 0; } } |