public static Murmur128 Create128(uint seed = 0, AlgorithmPreference preference = AlgorithmPreference.Auto) { var algorithm = Pick(seed, preference, s => new Murmur128_86(s), s => new Murmur128_64(s)); return(algorithm as Murmur128); }
public static Murmur128 Create128(uint seed = 0, bool managed = true, AlgorithmPreference preference = AlgorithmPreference.Auto) { var algorithm = managed ? Pick(seed, preference, s => new Murmur128ManagedX86(s), s => new Murmur128ManagedX64(s)) : Pick(seed, preference, s => new Murmur128UnmanagedX86(s), s => new Murmur128UnmanagedX64(s)); return(algorithm as Murmur128); }
// ReSharper disable UnusedMember.Global public static Murmur128 Create128(uint seed = 0, bool managed = true, AlgorithmPreference preference = AlgorithmPreference.Auto) // ReSharper restore UnusedMember.Global { var algorithm = managed ? Pick(seed, preference, s => new Murmur128ManagedX86(s), s => new Murmur128ManagedX64(s)) : Pick(seed, preference, s => new Murmur128UnmanagedX86(s), s => new Murmur128UnmanagedX64(s)); return(algorithm as Murmur128); }
private static HashAlgorithm Pick<T32, T64>(uint seed, AlgorithmPreference preference, Func<uint, T32> factory32, Func<uint, T64> factory64) where T32 : HashAlgorithm where T64 : HashAlgorithm { switch (preference) { case AlgorithmPreference.X64: return factory64(seed); case AlgorithmPreference.X86: return factory32(seed); default: { if (Is64BitProcess()) return factory64(seed); return factory32(seed); } } }
public MurmurOutputStream(Stream underlyingStream, uint seed = 0, bool managed = true, AlgorithmType type = AlgorithmType.Murmur128, AlgorithmPreference preference = AlgorithmPreference.Auto) { UnderlyingStream = underlyingStream; Algorithm = type == AlgorithmType.Murmur32 ? (HashAlgorithm)MurmurHash.Create32(seed, managed) : (HashAlgorithm)MurmurHash.Create128(seed, managed, preference); }