-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | MurmurHash2 implementation for Haskell.
--   
--   Implements MurmurHash2, a good, fast, general-purpose,
--   non-cryptographic hashing function. See
--   http://murmurhash.googlepages.com/ for details.
--   
--   This implementation is pure Haskell, so it might be a bit slower than
--   a C FFI binding.
@package murmur-hash
@version 0.1.0.6

-- | Type class and primitives for constructing 64 bit hashes using the
--   MurmurHash2 algorithm. See http://murmurhash.googlepages.com
--   for details on MurmurHash2.
module Data.Digest.Murmur64

-- | A 64 bit hash.
data Hash64

-- | Extract 64 bit word from hash.
asWord64 :: Hash64 -> Word64
class Hashable64 a
hash64Add :: Hashable64 a => a -> Hash64 -> Hash64

-- | Add a 64 bit word to the hash.
hash64AddWord64 :: Word64 -> Hash64 -> Hash64
hash64AddInt :: Int -> Hash64 -> Hash64

-- | Create a hash using the default seed.
hash64 :: Hashable64 a => a -> Hash64

-- | Create a hash using a custom seed. h The seed should be non-zero, but
--   other than that can be an arbitrary number. Different seeds will give
--   different hashes, and thus (most likely) different hash collisions.
hash64WithSeed :: Hashable64 a => Word64 -> a -> Hash64

-- | Combine two hash generators. E.g.,
--   
--   
--   hashFoo (Foo a) = hash64AddInt 1 combine hash64Add a
--   
combine :: (Hash64 -> Hash64) -> (Hash64 -> Hash64) -> (Hash64 -> Hash64)
instance Eq Hash64
instance Ord Hash64
instance Bounded Hash64
instance Hashable64 ByteString
instance Hashable64 ByteString
instance (Hashable64 a, Hashable64 b, Hashable64 c, Hashable64 d) => Hashable64 (a, b, c, d)
instance (Hashable64 a, Hashable64 b, Hashable64 c) => Hashable64 (a, b, c)
instance (Hashable64 a, Hashable64 b) => Hashable64 (a, b)
instance Hashable64 ()
instance (Hashable64 a, Hashable64 b) => Hashable64 (Either a b)
instance Hashable64 a => Hashable64 (Maybe a)
instance Hashable64 Bool
instance Hashable64 Integer
instance Hashable64 a => Hashable64 [a]
instance Hashable64 Word64
instance Hashable64 Int
instance Hashable64 Char
instance Show Hash64

-- | Type class and primitives for constructing 32 bit hashes using the
--   MurmurHash2 algorithm. See http://murmurhash.googlepages.com
--   for details on MurmurHash2.
module Data.Digest.Murmur32

-- | A 32 bit hash.
data Hash32

-- | Extract 32 bit word from hash.
asWord32 :: Hash32 -> Word32

-- | Instance for
class Hashable32 a
hash32Add :: Hashable32 a => a -> Hash32 -> Hash32
hash32AddWord32 :: Word32 -> Hash32 -> Hash32
hash32AddInt :: Int -> Hash32 -> Hash32

-- | Create a hash using the default seed.
hash32 :: Hashable32 a => a -> Hash32

-- | Create a hash using a custom seed.
--   
--   The seed should be non-zero, but other than that can be an arbitrary
--   number. Different seeds will give different hashes, and thus (most
--   likely) different hash collisions.
hash32WithSeed :: Hashable32 a => Word32 -> a -> Hash32
instance Eq Hash32
instance Ord Hash32
instance Bounded Hash32
instance Hashable32 ByteString
instance Hashable32 ByteString
instance (Hashable32 a, Hashable32 b, Hashable32 c, Hashable32 d) => Hashable32 (a, b, c, d)
instance (Hashable32 a, Hashable32 b, Hashable32 c) => Hashable32 (a, b, c)
instance (Hashable32 a, Hashable32 b) => Hashable32 (a, b)
instance Hashable32 ()
instance (Hashable32 a, Hashable32 b) => Hashable32 (Either a b)
instance Hashable32 a => Hashable32 (Maybe a)
instance Hashable32 Bool
instance Hashable32 Integer
instance Hashable32 a => Hashable32 [a]
instance Hashable32 Word32
instance Hashable32 Int
instance Hashable32 Char
instance Show Hash32
