using System.Collections.Generic;
using System.Linq;
namespace HavenSoft.AutoImplement.Delegation;
///
/// Provides a simple comparison implementation for enumerable things.
/// Used for creating dictionaries of implementations for generic methods (for stubs).
///
public class EnumerableEqualityComparer : IEqualityComparer> {
///
public bool Equals(IEnumerable a, IEnumerable b) => a.SequenceEqual(b);
///
public int GetHashCode(IEnumerable elements) {
uint code = 0;
foreach (var element in elements) {
code = ((code <<13) | (code >> 19)); // cyclic bit shift by a prime number
code ^= (uint)element.GetHashCode();
}
return (int)code;
}
}