lawful-conversions-0.1: src/library/LawfulConversions/TextCompat/Array.hs
{-# LANGUAGE CPP #-}
module LawfulConversions.TextCompat.Array where
import qualified Data.ByteString.Short
import qualified Data.ByteString.Short.Internal
import qualified Data.Primitive.ByteArray
import Data.Text.Array
import GHC.Exts (ByteArray#)
{-# INLINE toUnliftedByteArray #-}
toUnliftedByteArray :: Array -> ByteArray#
#if MIN_VERSION_text(2,0,0)
toUnliftedByteArray (ByteArray a) = a
#else
toUnliftedByteArray (Array a) = a
#endif
{-# INLINE fromUnliftedByteArray #-}
fromUnliftedByteArray :: ByteArray# -> Array
#if MIN_VERSION_text(2,0,0)
fromUnliftedByteArray = ByteArray
#else
fromUnliftedByteArray = Array
#endif
{-# INLINE fromShortByteString #-}
fromShortByteString :: Data.ByteString.Short.ShortByteString -> Array
fromShortByteString (Data.ByteString.Short.Internal.SBS arr) =
fromUnliftedByteArray arr
{-# INLINE toShortByteString #-}
toShortByteString :: Array -> Data.ByteString.Short.ShortByteString
toShortByteString a =
Data.ByteString.Short.Internal.SBS (toUnliftedByteArray a)
{-# INLINE fromByteArray #-}
fromByteArray :: Data.Primitive.ByteArray.ByteArray -> Array
fromByteArray (Data.Primitive.ByteArray.ByteArray arr) =
fromUnliftedByteArray arr
{-# INLINE toByteArray #-}
toByteArray :: Array -> Data.Primitive.ByteArray.ByteArray
toByteArray a =
Data.Primitive.ByteArray.ByteArray (toUnliftedByteArray a)