module Database.CDB.Util (cdbHash) where

import qualified Data.ByteString as ByteString
import Data.ByteString (ByteString)
import Data.Bits
import Data.Word

-- gets the hash value for a key
cdbHash :: ByteString -> Word32
cdbHash :: ByteString -> Word32
cdbHash =
  forall a. (a -> Word8 -> a) -> a -> ByteString -> a
ByteString.foldl' (\Word32
h Word8
c -> ((Word32
h forall a. Bits a => a -> Int -> a
`shiftL` Int
5) forall a. Num a => a -> a -> a
+ Word32
h) forall a. Bits a => a -> a -> a
`xor` forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
c) Word32
5381