    {-# OPTIONS_HADDOCK hide #-}
    {-# LANGUAGE MagicHash #-}
    {-# LANGUAGE UnliftedFFITypes #-}
    module Basement.Bindings.Memory
        where

    import GHC.IO
    import GHC.Prim
    import GHC.Word
    import Basement.Compat.C.Types
    import Foreign.Ptr
    import Basement.Types.OffsetSize

    foreign import ccall unsafe "_foundation_memcmp" sysHsMemcmpBaBa ::
        ByteArray# -> Offset Word8 -> ByteArray# -> Offset Word8 -> CountOf Word8 -> IO CInt

    foreign import ccall unsafe "_foundation_memcmp" sysHsMemcmpBaPtr ::
        ByteArray# -> Offset Word8 -> Ptr a -> Offset Word8 -> CountOf Word8 -> IO CInt

    foreign import ccall unsafe "_foundation_memcmp" sysHsMemcmpPtrBa ::
        Ptr a -> Offset Word8 -> ByteArray# -> Offset Word8 -> CountOf Word8 -> IO CInt

    foreign import ccall unsafe "_foundation_memcmp" sysHsMemcmpPtrPtr ::
        Ptr a -> Offset Word8 -> Ptr b -> Offset Word8 -> CountOf Word8 -> IO CInt

    foreign import ccall unsafe "_foundation_mem_findbyte" sysHsMemFindByteBa ::
        ByteArray# -> Offset Word8 -> Offset Word8 -> Word8 -> Offset Word8

    foreign import ccall unsafe "_foundation_mem_findbyte" sysHsMemFindByteAddr ::
        Addr# -> Offset Word8 -> Offset Word8 -> Word8 -> Offset Word8