module Foundation.Compat.ByteString
( fromByteString
, toByteString
) where
import Data.ByteString (ByteString)
import Data.ByteString.Internal (toForeignPtr, unsafeCreate, memcpy)
import Foundation
import Foundation.Array
import Foundation.Array.Internal (withPtr, fromForeignPtr)
fromByteString :: ByteString -> UArray Word8
fromByteString = fromForeignPtr . toForeignPtr
toByteString :: UArray Word8 -> ByteString
toByteString v = unsafeCreate len $ \dst -> withPtr v $ \src -> memcpy dst src len
where
!(CountOf len) = length v