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 (PS p o l) = fromIntegral $ lib_crc32c_value (unsafeForeignPtrToPtr p `plusPtr` o) (fromIntegral l) crc32c_update :: Word32 -> ByteString -> Word32 crc32c_update hash (PS p o l) = fromIntegral $ lib_crc32c_extend (CUInt hash) (unsafeForeignPtrToPtr p `plusPtr` o) (fromIntegral l)