File: Array.hs

package info (click to toggle)
haskell-isomorphism-class 0.3.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 264 kB
  • sloc: haskell: 794; makefile: 3
file content (45 lines) | stat: -rw-r--r-- 1,353 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{-# LANGUAGE CPP #-}

module IsomorphismClass.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)