module Data.Digest.CRC32C( crc32c , crc32c_update ) where import Data.ByteString.Internal (ByteString (..)) import Data.Digest.CRC32C.Internal import Data.Word import Foreign.C.Types import Foreign.ForeignPtr.Unsafe import Foreign.Ptr crc32c :: ByteString -> Word32 crc32c :: ByteString -> Word32 crc32c (PS ForeignPtr Word8 p Int o Int l) = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ Ptr CUChar -> CULong -> CUInt lib_crc32c_value (forall a. ForeignPtr a -> Ptr a unsafeForeignPtrToPtr ForeignPtr Word8 p forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int o) (forall a b. (Integral a, Num b) => a -> b fromIntegral Int l) crc32c_update :: Word32 -> ByteString -> Word32 crc32c_update :: Word32 -> ByteString -> Word32 crc32c_update Word32 hash (PS ForeignPtr Word8 p Int o Int l) = forall a b. (Integral a, Num b) => a -> b fromIntegral forall a b. (a -> b) -> a -> b $ CUInt -> Ptr CUChar -> CULong -> CUInt lib_crc32c_extend (Word32 -> CUInt CUInt Word32 hash) (forall a. ForeignPtr a -> Ptr a unsafeForeignPtrToPtr ForeignPtr Word8 p forall a b. Ptr a -> Int -> Ptr b `plusPtr` Int o) (forall a b. (Integral a, Num b) => a -> b fromIntegral Int l)