crc32c-0.0.0: src/Data/Digest/CRC32C.hs
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)