{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Hash.FNV1.Salted
(
FH.Fnv164Hash(..)
, FH.Fnv164Context
, FH.Fnv1a64Hash(..)
, FH.Fnv1a64Context
, FH.Fnv132Hash(..)
, FH.Fnv132Context
, FH.Fnv1a32Hash(..)
, FH.Fnv1a32Context
, FH.Fnv1Hash(..)
, FH.Fnv1Context
, FH.Fnv1aHash(..)
, FH.Fnv1aContext
, module Data.Hash.Class.Pure.Salted
) where
import Data.Word
import qualified Data.Hash.FNV1 as FH
import qualified Data.Hash.Class.Pure as PH
import Data.Hash.Class.Pure.Salted
instance Hash FH.Fnv164Hash where
type Salt FH.Fnv164Hash = Word64
initialize :: Salt Fnv164Hash -> Context Fnv164Hash
initialize = forall s. (Hash Fnv164Hash, Storable s) => s -> Context Fnv164Hash
forall a s. (Hash a, Storable s) => s -> Context a
PH.initializeWithSalt @FH.Fnv164Hash
{-# INLINE initialize #-}
instance Hash FH.Fnv1a64Hash where
type Salt FH.Fnv1a64Hash = Word64
initialize :: Salt Fnv1a64Hash -> Context Fnv1a64Hash
initialize = forall s.
(Hash Fnv1a64Hash, Storable s) =>
s -> Context Fnv1a64Hash
forall a s. (Hash a, Storable s) => s -> Context a
PH.initializeWithSalt @FH.Fnv1a64Hash
{-# INLINE initialize #-}
instance Hash FH.Fnv132Hash where
type Salt FH.Fnv132Hash = Word32
initialize :: Salt Fnv132Hash -> Context Fnv132Hash
initialize = forall s. (Hash Fnv132Hash, Storable s) => s -> Context Fnv132Hash
forall a s. (Hash a, Storable s) => s -> Context a
PH.initializeWithSalt @FH.Fnv132Hash
{-# INLINE initialize #-}
instance Hash FH.Fnv1a32Hash where
type Salt FH.Fnv1a32Hash = Word32
initialize :: Salt Fnv1a32Hash -> Context Fnv1a32Hash
initialize = forall s.
(Hash Fnv1a32Hash, Storable s) =>
s -> Context Fnv1a32Hash
forall a s. (Hash a, Storable s) => s -> Context a
PH.initializeWithSalt @FH.Fnv1a32Hash
{-# INLINE initialize #-}
instance Hash FH.Fnv1Hash where
type Salt FH.Fnv1Hash = Word
initialize :: Salt Fnv1Hash -> Context Fnv1Hash
initialize = forall s. (Hash Fnv1Hash, Storable s) => s -> Context Fnv1Hash
forall a s. (Hash a, Storable s) => s -> Context a
PH.initializeWithSalt @FH.Fnv1Hash
{-# INLINE initialize #-}
instance Hash FH.Fnv1aHash where
type Salt FH.Fnv1aHash = Word
initialize :: Salt Fnv1aHash -> Context Fnv1aHash
initialize = forall s. (Hash Fnv1aHash, Storable s) => s -> Context Fnv1aHash
forall a s. (Hash a, Storable s) => s -> Context a
PH.initializeWithSalt @FH.Fnv1aHash
{-# INLINE initialize #-}