Example #1
0
            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);
            }
Example #2
0
        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);
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
 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);
 }