39 lines
880 B
C#
39 lines
880 B
C#
using System;
|
|
using System.Globalization;
|
|
|
|
namespace Umbraco.ModelsBuilder.Embedded
|
|
{
|
|
// because, of course, it's internal in Umbraco
|
|
// see also System.Web.Util.HashCodeCombiner
|
|
internal class HashCombiner
|
|
{
|
|
private long _combinedHash = 5381L;
|
|
|
|
public void Add(int i)
|
|
{
|
|
_combinedHash = (_combinedHash << 5) + _combinedHash ^ i;
|
|
}
|
|
|
|
public void Add(object o)
|
|
{
|
|
Add(o.GetHashCode());
|
|
}
|
|
|
|
public void Add(DateTime d)
|
|
{
|
|
Add(d.GetHashCode());
|
|
}
|
|
|
|
public void Add(string s)
|
|
{
|
|
if (s == null) return;
|
|
Add(StringComparer.InvariantCulture.GetHashCode(s));
|
|
}
|
|
|
|
public string GetCombinedHashCode()
|
|
{
|
|
return _combinedHash.ToString("x", CultureInfo.InvariantCulture);
|
|
}
|
|
}
|
|
}
|