using System; using System.Collections.Generic; using System.Linq; namespace UnityEditor.Graphs.Material { internal static class Extensions { public static IEnumerable Except(this IEnumerable first, IEnumerable second , Func comparer ) { return first.Except(second, new LambdaComparer(comparer)); } public class LambdaComparer : IEqualityComparer { private readonly Func _lambdaComparer; private readonly Func _lambdaHash; public LambdaComparer(Func lambdaComparer) : this(lambdaComparer, o => 0) { } public LambdaComparer(Func lambdaComparer, Func lambdaHash) { if (lambdaComparer == null) throw new ArgumentNullException("lambdaComparer"); if (lambdaHash == null) throw new ArgumentNullException("lambdaHash"); _lambdaComparer = lambdaComparer; _lambdaHash = lambdaHash; } public bool Equals(T x, T y) { return _lambdaComparer(x, y); } public int GetHashCode(T obj) { return _lambdaHash(obj); } } } }