Z-Data 0.1.1.0 → 0.1.2.0
raw patch · 13 files changed
+560/−455 lines, 13 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Z.Data.JSON.Base: instance (GHC.Generics.Constructor c, Z.Data.JSON.Base.GEncodeJSON (GHC.Generics.S1 sc f)) => Z.Data.JSON.Base.GConstrEncodeJSON (GHC.Generics.C1 c (GHC.Generics.S1 sc f))
+ Z.Data.Array.UnalignedAccess: indexPrimWord8ArrayAs :: UnalignedAccess a => PrimArray Word8 -> Int -> a
+ Z.Data.Array.UnalignedAccess: indexWord8ArrayAs# :: UnalignedAccess a => ByteArray# -> Int# -> a
+ Z.Data.Array.UnalignedAccess: readPrimWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutablePrimArray (PrimState m) Word8 -> Int -> m a
+ Z.Data.Array.UnalignedAccess: readWord8ArrayAs# :: UnalignedAccess a => MutableByteArray# s -> Int# -> State# s -> (# State# s, a #)
+ Z.Data.Array.UnalignedAccess: writePrimWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutablePrimArray (PrimState m) Word8 -> Int -> a -> m ()
+ Z.Data.Array.UnalignedAccess: writeWord8ArrayAs# :: UnalignedAccess a => MutableByteArray# s -> Int# -> a -> State# s -> State# s
+ Z.Data.CBytes: type CString = Ptr CChar
+ Z.Data.JSON.Base: instance (GHC.Generics.Constructor c, Z.Data.JSON.Base.GEncodeJSON (GHC.Generics.S1 ('GHC.Generics.MetaSel 'GHC.Maybe.Nothing u ss ds) f)) => Z.Data.JSON.Base.GConstrEncodeJSON (GHC.Generics.C1 c (GHC.Generics.S1 ('GHC.Generics.MetaSel 'GHC.Maybe.Nothing u ss ds) f))
+ Z.Data.JSON.Base: instance (GHC.Generics.Constructor c, Z.Data.JSON.Base.GEncodeJSON (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just l) u ss ds) f)) => Z.Data.JSON.Base.GConstrEncodeJSON (GHC.Generics.C1 c (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just l) u ss ds) f))
- Z.Data.Array.UnalignedAccess: indexWord8ArrayAs :: UnalignedAccess a => ByteArray# -> Int# -> a
+ Z.Data.Array.UnalignedAccess: indexWord8ArrayAs :: UnalignedAccess a => ByteArray -> Int -> a
- Z.Data.Array.UnalignedAccess: readWord8ArrayAs :: UnalignedAccess a => MutableByteArray# s -> Int# -> State# s -> (# State# s, a #)
+ Z.Data.Array.UnalignedAccess: readWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutableByteArray (PrimState m) -> Int -> m a
- Z.Data.Array.UnalignedAccess: writeWord8ArrayAs :: UnalignedAccess a => MutableByteArray# s -> Int# -> a -> State# s -> State# s
+ Z.Data.Array.UnalignedAccess: writeWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutableByteArray (PrimState m) -> Int -> a -> m ()
Files
- ChangeLog.md +5/−15
- LICENSE +1/−1
- README.md +58/−1
- Z-Data.cabal +2/−2
- Z/Data/Array/UnalignedAccess.hs +339/−306
- Z/Data/Builder/Base.hs +9/−11
- Z/Data/CBytes.hs +2/−0
- Z/Data/JSON/Base.hs +9/−1
- Z/Data/Parser/Base.hs +9/−10
- Z/Data/Text/Builder.hs +9/−2
- Z/Data/Vector/Base.hs +9/−4
- test/Z/Data/Array/UnalignedAccessSpec.hs +102/−102
- test/Z/Data/JSON/BaseSpec.hs +6/−0
ChangeLog.md view
@@ -1,18 +1,8 @@-# Revision history for stdio--## 0.1.1.0 -- 2019-02-19+# Revision history for Z-Data -* Add LEON, a little endian first serialization/deserialization module.-* Use pkg-config to find libuv by default, which can be turned off via cabal flag no-pkg-config-* Export `Result` constructor in `Std.Data.Parser` module.+## 0.1.2.0 -- 2020-09-19 -## 0.2.0.0 --2019-05-15+* Rename 'read/write/indexWord8ArrayAs' to 'read/write/indexWord8ArrayAs#'.+* Add 'read/write/indexWord8ArrayAs', 'read/write/indexPrimWord8ArrayAs'.+* Fix JSON encoding code in generic instance(constructor with single payload case). -* Add UDP module.-* Add JSON module.-* Add `ToText` class to `TextBuilder` module.-* Improve numeric builders by using FFI code.-* Change `readParser` 's type in `Std.IO.Buffered` module to directly return parsing result.-* Add `FlatMap/FlatSet/FlatIntMap/FlatIntSet` module.-* Fix a bug of `Parser` 's `Alternative` instance.-* Fix a bug of `PrimVector` 's `QuasiQuoter`.
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2017-2019, Haskell Stdio Team+Copyright (c) 2017-2020, Haskell Z Team All rights reserved.
README.md view
@@ -14,7 +14,64 @@ * Parsing and building monad * JSON encoding and decoding -## dev guide+## Example usage++```haskell+> import qualified Z.Data.Vector as V+> import qualified Z.Data.Array as A+>+> -- convert from list+> let v = V.pack [1..10] :: V.PrimVector Int +> -- vector combinators works on arrays as well+> let a = V.pack [1..10] :: A.Array Int +> -- slicing vector(slice) is O(1)+> V.take 3 v +[1,2,3]+-- slicing array is not O(1)+> V.drop 3 a +fromListN 7 [4,5,6,7,8,9,10]+>+> V.intersperse 10 v+[1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10]+>+> V.mergeSort (V.intersperse 10 v) +[1,2,3,4,5,6,7,8,9,10,10,10,10,10,10,10,10,10,10]+> -- Generic KMP search on vectors+> V.indices (V.singleton 10) (V.intersperse 10 v) True +[1,3,5,7,9,11,13,15,17,18]+>+> -- quoter for writing numeric vector literals+> :set -XQuasiQuotes +> :t [V.vecWord|1,2,3,4,5,4,3,2,1|] +[V.vecWord|1,2,3,4,5,4,3,2,1|] :: V.PrimVector Word+>+> import qualified Z.Data.Builder as B+> import qualified Z.Data.Text as T+> :set -XOverloadedStrings +>+> -- Builders can be used with OverloadedStrings+> B.buildBytes $ "builders: " >> B.hex (3 :: Word16) >> B.comma >> B.double 1.2345678+[98,117,105,108,100,101,114,115,58,32,48,48,48,51,44,49,46,50,51,52,53,54,55,56]+> +> T.validate . B.buildBytes $ "builders: " >> B.hex (3 :: Word16) >> B.comma >> B.double 1.2345678+"builders: 0003,1.2345678"+>+> import qualified Z.Data.JSON as JSON+> import GHC.Generics+> +> JSON.parseValue "[1,2,3,4,5]"+([],Right (Array [Number 1.0,Number 2.0,Number 3.0,Number 4.0,Number 5.0]))+>+> -- JSON module support deriving through Generic+> set -XDeriveAnyClass -XDeriveGeneric+> data Foo = Foo {foo :: Double} deriving (JSON.FromValue, JSON.ToValue, JSON.EncodeJSON, Generic)+> JSON.toValue (Foo 0.01)+Object [("foo",Number 1.0e-2)]+> JSON.encodeText (Foo 0.01)+"{\"foo\":1.0e-2}"+```++## Dev guide + GHC(>=8.10.2) + cabal-install(>=3.4)
Z-Data.cabal view
@@ -1,6 +1,6 @@ name: Z-Data-version: 0.1.1.0-synopsis: array, vector and text+version: 0.1.2.0+synopsis: Array, vector and text description: This package provides array, slice and text operations license: BSD3 license-file: LICENSE
Z/Data/Array/UnalignedAccess.hs view
@@ -23,6 +23,9 @@ import GHC.Types import GHC.Word import GHC.Float (stgFloatToWord32, stgWord32ToFloat, stgWord64ToDouble, stgDoubleToWord64)+import Control.Monad.Primitive+import Data.Primitive.ByteArray+import Data.Primitive.PrimArray -- toggle these defs to test different implements #define USE_BSWAP@@ -36,31 +39,61 @@ -- class UnalignedAccess a where unalignedSize :: UnalignedSize a- writeWord8ArrayAs :: MutableByteArray# s -> Int# -> a -> State# s -> State# s- readWord8ArrayAs :: MutableByteArray# s -> Int# -> State# s -> (# State# s, a #)- indexWord8ArrayAs :: ByteArray# -> Int# -> a+ writeWord8ArrayAs# :: MutableByteArray# s -> Int# -> a -> State# s -> State# s+ readWord8ArrayAs# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, a #)+ indexWord8ArrayAs# :: ByteArray# -> Int# -> a +-- | Lifted version of 'writeWord8ArrayAs#'+writeWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutableByteArray (PrimState m) -> Int -> a -> m ()+{-# INLINE writeWord8ArrayAs #-}+writeWord8ArrayAs (MutableByteArray mba#) (I# i#) x = primitive_ (writeWord8ArrayAs# mba# i# x)++-- | Lifted version of 'readWord8ArrayAs#'+readWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutableByteArray (PrimState m) -> Int -> m a+{-# INLINE readWord8ArrayAs #-}+readWord8ArrayAs (MutableByteArray mba#) (I# i#) = primitive (readWord8ArrayAs# mba# i#)++-- | Lifted version of 'indexWord8ArrayAs#'+indexWord8ArrayAs :: UnalignedAccess a => ByteArray -> Int -> a+{-# INLINE indexWord8ArrayAs #-}+indexWord8ArrayAs (ByteArray ba#) (I# i#) = indexWord8ArrayAs# ba# i#++-- | Lifted version of 'writeWord8ArrayAs#'+writePrimWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutablePrimArray (PrimState m) Word8 -> Int -> a -> m ()+{-# INLINE writePrimWord8ArrayAs #-}+writePrimWord8ArrayAs (MutablePrimArray mba#) (I# i#) x = primitive_ (writeWord8ArrayAs# mba# i# x)++-- | Lifted version of 'readWord8ArrayAs#'+readPrimWord8ArrayAs :: (PrimMonad m, UnalignedAccess a) => MutablePrimArray (PrimState m) Word8 -> Int -> m a+{-# INLINE readPrimWord8ArrayAs #-}+readPrimWord8ArrayAs (MutablePrimArray mba#) (I# i#) = primitive (readWord8ArrayAs# mba# i#)++-- | Lifted version of 'indexWord8ArrayAs#'+indexPrimWord8ArrayAs :: UnalignedAccess a => PrimArray Word8 -> Int -> a+{-# INLINE indexPrimWord8ArrayAs #-}+indexPrimWord8ArrayAs (PrimArray ba#) (I# i#) = indexWord8ArrayAs# ba# i#+ instance UnalignedAccess Word8 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 1- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (W8# x#) = writeWord8Array# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (W8# x#) = writeWord8Array# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8Array# mba# i# s0 in (# s1, W8# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = W8# (indexWord8Array# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = W8# (indexWord8Array# ba# i#) instance UnalignedAccess Int8 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 1- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (I8# x#) = writeInt8Array# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (I8# x#) = writeInt8Array# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readInt8Array# mba# i# s0 in (# s1, I8# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = I8# (indexInt8Array# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = I8# (indexInt8Array# ba# i#) -- | little endianess wrapper --@@ -71,42 +104,42 @@ newtype BE a = BE { getBE :: a } deriving (Show, Eq) #define USE_HOST_IMPL(END) \- {-# INLINE writeWord8ArrayAs #-}; \- writeWord8ArrayAs mba# i# (END x) = writeWord8ArrayAs mba# i# x; \- {-# INLINE readWord8ArrayAs #-}; \- readWord8ArrayAs mba# i# s0 = \- let !(# s1, x #) = readWord8ArrayAs mba# i# s0 in (# s1, END x #); \- {-# INLINE indexWord8ArrayAs #-}; \- indexWord8ArrayAs ba# i# = END (indexWord8ArrayAs ba# i#);+ {-# INLINE writeWord8ArrayAs# #-}; \+ writeWord8ArrayAs# mba# i# (END x) = writeWord8ArrayAs# mba# i# x; \+ {-# INLINE readWord8ArrayAs# #-}; \+ readWord8ArrayAs# mba# i# s0 = \+ let !(# s1, x #) = readWord8ArrayAs# mba# i# s0 in (# s1, END x #); \+ {-# INLINE indexWord8ArrayAs# #-}; \+ indexWord8ArrayAs# ba# i# = END (indexWord8ArrayAs# ba# i#); -------------------------------------------------------------------------------- instance UnalignedAccess Word16 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 2- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (W16# x#) = writeWord8ArrayAsWord16# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (W16# x#) = writeWord8ArrayAsWord16# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord16# mba# i# s0 in (# s1, W16# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = W16# (indexWord8ArrayAsWord16# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = W16# (indexWord8ArrayAsWord16# ba# i#) instance UnalignedAccess (LE Word16) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 2 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (W16# x#)) s0# =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (W16# x#)) s0# = let s1# = writeWord8Array# mba# i# x# s0# in writeWord8Array# mba# (i# +# 1#) (uncheckedShiftRL# x# 8#) s1#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, w1# #) = readWord8Array# mba# i# s0 !(# s2, w2# #) = readWord8Array# mba# (i# +# 1#) s1 in (# s2, LE (W16# (uncheckedShiftL# w2# 8# `or#` w1#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = let w1# = indexWord8Array# ba# i# w2# = indexWord8Array# ba# (i# +# 1#) in LE (W16# (uncheckedShiftL# w2# 8# `or#` w1#))@@ -123,26 +156,26 @@ -- on X86 we use bswap -- TODO: find out if arch64 support this #if (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH)) && defined(USE_BSWAP)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W16# x#)) = writeWord8ArrayAsWord16# mba# i# (byteSwap16# x#)- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W16# x#)) = writeWord8ArrayAsWord16# mba# i# (byteSwap16# x#)+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord16# mba# i# s0 in (# s1, BE (W16# (byteSwap16# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = BE (W16# (byteSwap16# (indexWord8ArrayAsWord16# ba# i#)))+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = BE (W16# (byteSwap16# (indexWord8ArrayAsWord16# ba# i#))) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W16# x#)) s0# =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W16# x#)) s0# = let s1# = writeWord8Array# mba# i# (uncheckedShiftRL# x# 8#) s0# in writeWord8Array# mba# (i# +# 1#) x# s1#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, w2# #) = readWord8Array# mba# i# s0 !(# s2, w1# #) = readWord8Array# mba# (i# +# 1#) s1 in (# s2, BE (W16# (uncheckedShiftL# w2# 8# `or#` w1#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = let w2# = indexWord8Array# ba# i# w1# = indexWord8Array# ba# (i# +# 1#) in BE (W16# (uncheckedShiftL# w2# 8# `or#` w1#))@@ -154,27 +187,27 @@ instance UnalignedAccess Word32 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (W32# x#) = writeWord8ArrayAsWord32# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (W32# x#) = writeWord8ArrayAsWord32# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord32# mba# i# s0 in (# s1, W32# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = W32# (indexWord8ArrayAsWord32# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = W32# (indexWord8ArrayAsWord32# ba# i#) instance UnalignedAccess (LE Word32) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (W32# x#)) s0# =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (W32# x#)) s0# = let s1# = writeWord8Array# mba# i# x# s0# s2# = writeWord8Array# mba# (i# +# 1#) (uncheckedShiftRL# x# 8#) s1# s3# = writeWord8Array# mba# (i# +# 2#) (uncheckedShiftRL# x# 16#) s2# in writeWord8Array# mba# (i# +# 3#) (uncheckedShiftRL# x# 24#) s3#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, w1# #) = readWord8Array# mba# i# s0 !(# s2, w2# #) = readWord8Array# mba# (i# +# 1#) s1 !(# s3, w3# #) = readWord8Array# mba# (i# +# 2#) s2@@ -182,8 +215,8 @@ in (# s4, LE (W32# ((uncheckedShiftL# w4# 24#) `or#` (uncheckedShiftL# w3# 16#) `or#` (uncheckedShiftL# w2# 8#) `or#` w1#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = let w1# = indexWord8Array# ba# i# w2# = indexWord8Array# ba# (i# +# 1#) w3# = indexWord8Array# ba# (i# +# 2#)@@ -204,23 +237,23 @@ -- on X86 we use bswap -- TODO: find out if arch64 support this #if (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH)) && defined(USE_BSWAP)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W32# x#)) = writeWord8ArrayAsWord32# mba# i# (byteSwap32# x#)- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W32# x#)) = writeWord8ArrayAsWord32# mba# i# (byteSwap32# x#)+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord32# mba# i# s0 in (# s1, BE (W32# (byteSwap32# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = BE (W32# (byteSwap32# (indexWord8ArrayAsWord32# ba# i#)))+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = BE (W32# (byteSwap32# (indexWord8ArrayAsWord32# ba# i#))) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W32# x#)) s0# =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W32# x#)) s0# = let s1# = writeWord8Array# mba# i# (uncheckedShiftRL# x# 24#) s0# s2# = writeWord8Array# mba# (i# +# 1#) (uncheckedShiftRL# x# 16#) s1# s3# = writeWord8Array# mba# (i# +# 2#) (uncheckedShiftRL# x# 8#) s2# in writeWord8Array# mba# (i# +# 3#) x# s3#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, w4# #) = readWord8Array# mba# i# s0 !(# s2, w3# #) = readWord8Array# mba# (i# +# 1#) s1 !(# s3, w2# #) = readWord8Array# mba# (i# +# 2#) s2@@ -228,8 +261,8 @@ in (# s4, BE (W32# ((uncheckedShiftL# w4# 24#) `or#` (uncheckedShiftL# w3# 16#) `or#` (uncheckedShiftL# w2# 8#) `or#` w1#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = let w4# = indexWord8Array# ba# i# w3# = indexWord8Array# ba# (i# +# 1#) w2# = indexWord8Array# ba# (i# +# 2#)@@ -245,21 +278,21 @@ instance UnalignedAccess Word64 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (W64# x#) = writeWord8ArrayAsWord64# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (W64# x#) = writeWord8ArrayAsWord64# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord64# mba# i# s0 in (# s1, W64# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = W64# (indexWord8ArrayAsWord64# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = W64# (indexWord8ArrayAsWord64# ba# i#) instance UnalignedAccess (LE Word64) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (W64# x#)) s0# =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (W64# x#)) s0# = let s1# = writeWord8Array# mba# i# x# s0# s2# = writeWord8Array# mba# (i# +# 1#) (uncheckedShiftRL# x# 8#) s1# s3# = writeWord8Array# mba# (i# +# 2#) (uncheckedShiftRL# x# 16#) s2#@@ -268,8 +301,8 @@ s6# = writeWord8Array# mba# (i# +# 5#) (uncheckedShiftRL# x# 40#) s5# s7# = writeWord8Array# mba# (i# +# 6#) (uncheckedShiftRL# x# 48#) s6# in writeWord8Array# mba# (i# +# 7#) (uncheckedShiftRL# x# 56#) s7#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, w1# #) = readWord8Array# mba# i# s0 !(# s2, w2# #) = readWord8Array# mba# (i# +# 1#) s1 !(# s3, w3# #) = readWord8Array# mba# (i# +# 2#) s2@@ -285,8 +318,8 @@ (uncheckedShiftL# w4# 24#) `or#` (uncheckedShiftL# w3# 16#) `or#` (uncheckedShiftL# w2# 8#) `or#` w1#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = let w1# = indexWord8Array# ba# i# w2# = indexWord8Array# ba# (i# +# 1#) w3# = indexWord8Array# ba# (i# +# 2#)@@ -315,17 +348,17 @@ -- on X86 we use bswap -- TODO: find out if arch64 support this #if (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH)) && defined(USE_BSWAP)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W64# x#)) = writeWord8ArrayAsWord64# mba# i# (byteSwap64# x#)- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W64# x#)) = writeWord8ArrayAsWord64# mba# i# (byteSwap64# x#)+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord64# mba# i# s0 in (# s1, BE (W64# (byteSwap64# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = BE (W64# (byteSwap64# (indexWord8ArrayAsWord64# ba# i#)))+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = BE (W64# (byteSwap64# (indexWord8ArrayAsWord64# ba# i#))) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W64# x#)) s0# =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W64# x#)) s0# = let s1# = writeWord8Array# mba# i# (uncheckedShiftRL# x# 56#) s0# s2# = writeWord8Array# mba# (i# +# 1#) (uncheckedShiftRL# x# 48#) s1# s3# = writeWord8Array# mba# (i# +# 2#) (uncheckedShiftRL# x# 40#) s2#@@ -334,8 +367,8 @@ s6# = writeWord8Array# mba# (i# +# 5#) (uncheckedShiftRL# x# 16#) s5# s7# = writeWord8Array# mba# (i# +# 6#) (uncheckedShiftRL# x# 8#) s6# in writeWord8Array# mba# (i# +# 7#) x# s7#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, w8# #) = readWord8Array# mba# i# s0 !(# s2, w7# #) = readWord8Array# mba# (i# +# 1#) s1 !(# s3, w6# #) = readWord8Array# mba# (i# +# 2#) s2@@ -351,8 +384,8 @@ (uncheckedShiftL# w4# 24#) `or#` (uncheckedShiftL# w3# 16#) `or#` (uncheckedShiftL# w2# 8#) `or#` w1#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = let w8# = indexWord8Array# ba# i# w7# = indexWord8Array# ba# (i# +# 1#) w6# = indexWord8Array# ba# (i# +# 2#)@@ -381,58 +414,58 @@ {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8 #endif- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (W# x#) = writeWord8ArrayAsWord# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (W# x#) = writeWord8ArrayAsWord# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWord# mba# i# s0 in (# s1, W# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = W# (indexWord8ArrayAsWord# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = W# (indexWord8ArrayAsWord# ba# i#) instance UnalignedAccess (LE Word) where #if SIZEOF_HSWORD == 4 {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (W# x#)) = writeWord8ArrayAs mba# i# (LE (W32# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W32# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, LE (W# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (LE (W32# x#)) -> LE (W# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (W# x#)) = writeWord8ArrayAs# mba# i# (LE (W32# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (W# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (LE (W32# x#)) -> LE (W# x#) #else {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (W# x#)) = writeWord8ArrayAs mba# i# (LE (W64# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W64# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, LE (W# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (LE (W64# x#)) -> LE (W# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (W# x#)) = writeWord8ArrayAs# mba# i# (LE (W64# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (W# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (LE (W64# x#)) -> LE (W# x#) #endif instance UnalignedAccess (BE Word) where #if SIZEOF_HSWORD == 4 {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W# x#)) = writeWord8ArrayAs mba# i# (BE (W32# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W32# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, BE (W# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (BE (W32# x#)) -> BE (W# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W# x#)) = writeWord8ArrayAs# mba# i# (BE (W32# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (W# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (BE (W32# x#)) -> BE (W# x#) #else {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (W# x#)) = writeWord8ArrayAs mba# i# (BE (W64# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W64# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, BE (W# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (BE (W64# x#)) -> BE (W# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (W# x#)) = writeWord8ArrayAs# mba# i# (BE (W64# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (W# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (BE (W64# x#)) -> BE (W# x#) #endif --------------------------------------------------------------------------------@@ -440,28 +473,28 @@ instance UnalignedAccess Int16 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 2- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (I16# x#) = writeWord8ArrayAsInt16# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (I16# x#) = writeWord8ArrayAsInt16# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsInt16# mba# i# s0 in (# s1, I16# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = I16# (indexWord8ArrayAsInt16# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = I16# (indexWord8ArrayAsInt16# ba# i#) instance UnalignedAccess (LE Int16) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 2 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (I16# x#)) =- writeWord8ArrayAs mba# i# (LE (W16# (int2Word# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W16# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (I16# x#)) =+ writeWord8ArrayAs# mba# i# (LE (W16# (int2Word# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W16# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (I16# (narrow16Int# (word2Int# x#))) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let LE (W16# x#) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let LE (W16# x#) = indexWord8ArrayAs# ba# i# in LE (I16# (narrow16Int# (word2Int# x#))) #else USE_HOST_IMPL(LE)@@ -473,16 +506,16 @@ #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT) USE_HOST_IMPL(BE) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (I16# x#)) =- writeWord8ArrayAs mba# i# (BE (W16# (int2Word# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W16# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (I16# x#)) =+ writeWord8ArrayAs# mba# i# (BE (W16# (int2Word# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W16# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (I16# (narrow16Int# (word2Int# x#))) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let !(BE (W16# x#)) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let !(BE (W16# x#)) = indexWord8ArrayAs# ba# i# in BE (I16# (narrow16Int# (word2Int# x#))) #endif @@ -491,28 +524,28 @@ instance UnalignedAccess Int32 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (I32# x#) = writeWord8ArrayAsInt32# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (I32# x#) = writeWord8ArrayAsInt32# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsInt32# mba# i# s0 in (# s1, I32# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = I32# (indexWord8ArrayAsInt32# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = I32# (indexWord8ArrayAsInt32# ba# i#) instance UnalignedAccess (LE Int32) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (I32# x#)) =- writeWord8ArrayAs mba# i# (LE (W32# (int2Word# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W32# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (I32# x#)) =+ writeWord8ArrayAs# mba# i# (LE (W32# (int2Word# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (I32# (narrow32Int# (word2Int# x#))) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let LE (W32# x#) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let LE (W32# x#) = indexWord8ArrayAs# ba# i# in LE (I32# (narrow32Int# (word2Int# x#))) #else USE_HOST_IMPL(LE)@@ -524,16 +557,16 @@ #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT) USE_HOST_IMPL(BE) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (I32# x#)) =- writeWord8ArrayAs mba# i# (BE (W32# (int2Word# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W32# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (I32# x#)) =+ writeWord8ArrayAs# mba# i# (BE (W32# (int2Word# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (I32# (narrow32Int# (word2Int# x#))) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let !(BE (W32# x#)) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let !(BE (W32# x#)) = indexWord8ArrayAs# ba# i# in BE (I32# (narrow32Int# (word2Int# x#))) #endif @@ -542,28 +575,28 @@ instance UnalignedAccess Int64 where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (I64# x#) = writeWord8ArrayAsInt64# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (I64# x#) = writeWord8ArrayAsInt64# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsInt64# mba# i# s0 in (# s1, I64# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = I64# (indexWord8ArrayAsInt64# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = I64# (indexWord8ArrayAsInt64# ba# i#) instance UnalignedAccess (LE Int64) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (I64# x#)) =- writeWord8ArrayAs mba# i# (LE (W64# (int2Word# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W64# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (I64# x#)) =+ writeWord8ArrayAs# mba# i# (LE (W64# (int2Word# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (I64# (word2Int# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let LE (W64# x#) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let LE (W64# x#) = indexWord8ArrayAs# ba# i# in LE (I64# (word2Int# x#)) #else USE_HOST_IMPL(LE)@@ -575,16 +608,16 @@ #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT) USE_HOST_IMPL(BE) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (I64# x#)) =- writeWord8ArrayAs mba# i# (BE (W64# (int2Word# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W64# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (I64# x#)) =+ writeWord8ArrayAs# mba# i# (BE (W64# (int2Word# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (I64# (word2Int# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let !(BE (W64# x#)) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let !(BE (W64# x#)) = indexWord8ArrayAs# ba# i# in BE (I64# (word2Int# x#)) #endif @@ -598,58 +631,58 @@ {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8 #endif- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (I# x#) = writeWord8ArrayAsInt# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (I# x#) = writeWord8ArrayAsInt# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsInt# mba# i# s0 in (# s1, I# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = I# (indexWord8ArrayAsInt# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = I# (indexWord8ArrayAsInt# ba# i#) instance UnalignedAccess (LE Int) where #if SIZEOF_HSWORD == 4 {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (I# x#)) = writeWord8ArrayAs mba# i# (LE (I32# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (I32# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, LE (I# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (LE (I32# x#)) -> LE (I# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (I# x#)) = writeWord8ArrayAs# mba# i# (LE (I32# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (I32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (I# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (LE (I32# x#)) -> LE (I# x#) #else {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (I# x#)) = writeWord8ArrayAs mba# i# (LE (I64# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (I64# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, LE (I# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (LE (I64# x#)) -> LE (I# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (I# x#)) = writeWord8ArrayAs# mba# i# (LE (I64# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (I64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (I# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (LE (I64# x#)) -> LE (I# x#) #endif instance UnalignedAccess (BE Int) where #if SIZEOF_HSWORD == 4 {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (I# x#)) = writeWord8ArrayAs mba# i# (BE (I32# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (I32# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, BE (I# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (BE (I32# x#)) -> BE (I# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (I# x#)) = writeWord8ArrayAs# mba# i# (BE (I32# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (I32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (I# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (BE (I32# x#)) -> BE (I# x#) #else {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (I# x#)) = writeWord8ArrayAs mba# i# (BE (I64# x#))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (I64# x#) #) = readWord8ArrayAs mba# i# s0 in (# s1, BE (I# x#) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = case (indexWord8ArrayAs ba# i#) of (BE (I64# x#)) -> BE (I# x#)+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (I# x#)) = writeWord8ArrayAs# mba# i# (BE (I64# x#))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (I64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (I# x#) #)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = case (indexWord8ArrayAs# ba# i#) of (BE (I64# x#)) -> BE (I# x#) #endif --------------------------------------------------------------------------------@@ -657,28 +690,28 @@ instance UnalignedAccess Float where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (F# x#) = writeWord8ArrayAsFloat# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (F# x#) = writeWord8ArrayAsFloat# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsFloat# mba# i# s0 in (# s1, F# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = F# (indexWord8ArrayAsFloat# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = F# (indexWord8ArrayAsFloat# ba# i#) instance UnalignedAccess (LE Float) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (F# x#)) =- writeWord8ArrayAs mba# i# (LE (W32# (stgFloatToWord32 x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W32# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (F# x#)) =+ writeWord8ArrayAs# mba# i# (LE (W32# (stgFloatToWord32 x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (F# (stgWord32ToFloat x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let LE (W32# x#) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let LE (W32# x#) = indexWord8ArrayAs# ba# i# in LE (F# (stgWord32ToFloat x#)) #else USE_HOST_IMPL(LE)@@ -690,16 +723,16 @@ #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT) USE_HOST_IMPL(BE) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (F# x#)) =- writeWord8ArrayAs mba# i# (BE (W32# (stgFloatToWord32 x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W32# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (F# x#)) =+ writeWord8ArrayAs# mba# i# (BE (W32# (stgFloatToWord32 x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (F# (stgWord32ToFloat x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let !(BE (W32# x#)) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let !(BE (W32# x#)) = indexWord8ArrayAs# ba# i# in BE (F# (stgWord32ToFloat x#)) #endif @@ -708,28 +741,28 @@ instance UnalignedAccess Double where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (D# x#) = writeWord8ArrayAsDouble# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (D# x#) = writeWord8ArrayAsDouble# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsDouble# mba# i# s0 in (# s1, D# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = D# (indexWord8ArrayAsDouble# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = D# (indexWord8ArrayAsDouble# ba# i#) instance UnalignedAccess (LE Double) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 8 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (D# x#)) =- writeWord8ArrayAs mba# i# (LE (W64# (stgDoubleToWord64 x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (W64# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (D# x#)) =+ writeWord8ArrayAs# mba# i# (LE (W64# (stgDoubleToWord64 x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (W64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (D# (stgWord64ToDouble x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let LE (W64# x#) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let LE (W64# x#) = indexWord8ArrayAs# ba# i# in LE (D# (stgWord64ToDouble x#)) #else USE_HOST_IMPL(LE)@@ -741,16 +774,16 @@ #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT) USE_HOST_IMPL(BE) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (D# x#)) =- writeWord8ArrayAs mba# i# (BE (W64# (stgDoubleToWord64 x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (W64# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (D# x#)) =+ writeWord8ArrayAs# mba# i# (BE (W64# (stgDoubleToWord64 x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (W64# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (D# (stgWord64ToDouble x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let !(BE (W64# x#)) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let !(BE (W64# x#)) = indexWord8ArrayAs# ba# i# in BE (D# (stgWord64ToDouble x#)) #endif @@ -759,28 +792,28 @@ instance UnalignedAccess Char where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (C# x#) = writeWord8ArrayAsWideChar# mba# i# x#- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (C# x#) = writeWord8ArrayAsWideChar# mba# i# x#+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 = let !(# s1, x# #) = readWord8ArrayAsWideChar# mba# i# s0 in (# s1, C# x# #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# = C# (indexWord8ArrayAsWideChar# ba# i#)+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# = C# (indexWord8ArrayAsWideChar# ba# i#) instance UnalignedAccess (LE Char) where {-# INLINE unalignedSize #-} unalignedSize = UnalignedSize 4 #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT)- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (LE (C# x#)) =- writeWord8ArrayAs mba# i# (LE (I32# (ord# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, LE (I32# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (LE (C# x#)) =+ writeWord8ArrayAs# mba# i# (LE (I32# (ord# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, LE (I32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, LE (C# (chr# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let LE (I32# x#) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let LE (I32# x#) = indexWord8ArrayAs# ba# i# in LE (C# (chr# x#)) #else USE_HOST_IMPL(LE)@@ -792,16 +825,16 @@ #if defined(WORDS_BIGENDIAN) || defined(USE_SHIFT) USE_HOST_IMPL(BE) #else- {-# INLINE writeWord8ArrayAs #-}- writeWord8ArrayAs mba# i# (BE (C# x#)) =- writeWord8ArrayAs mba# i# (BE (I32# (ord# x#)))- {-# INLINE readWord8ArrayAs #-}- readWord8ArrayAs mba# i# s0 =- let !(# s1, BE (I32# x#) #) = readWord8ArrayAs mba# i# s0+ {-# INLINE writeWord8ArrayAs# #-}+ writeWord8ArrayAs# mba# i# (BE (C# x#)) =+ writeWord8ArrayAs# mba# i# (BE (I32# (ord# x#)))+ {-# INLINE readWord8ArrayAs# #-}+ readWord8ArrayAs# mba# i# s0 =+ let !(# s1, BE (I32# x#) #) = readWord8ArrayAs# mba# i# s0 in (# s1, BE (C# (chr# x#)) #)- {-# INLINE indexWord8ArrayAs #-}- indexWord8ArrayAs ba# i# =- let !(BE (I32# x#)) = indexWord8ArrayAs ba# i#+ {-# INLINE indexWord8ArrayAs# #-}+ indexWord8ArrayAs# ba# i# =+ let !(BE (I32# x#)) = indexWord8ArrayAs# ba# i# in BE (C# (chr# x#)) #endif
Z/Data/Builder/Base.hs view
@@ -76,7 +76,6 @@ import Control.Monad.ST import Control.Monad.ST.Unsafe (unsafeInterleaveST) import Data.Bits (shiftL, shiftR, (.&.))-import Data.Primitive.PrimArray (MutablePrimArray (..)) import Data.Primitive.Ptr (copyPtrToMutablePrimArray) import Data.String (IsString (..)) import Data.Word@@ -84,7 +83,6 @@ import GHC.CString (unpackCString#, unpackCStringUtf8#) import GHC.Prim import GHC.Ptr-import GHC.Types import qualified Z.Data.Array as A import Z.Data.Array.UnalignedAccess import qualified Z.Data.Text.Base as T@@ -396,9 +394,9 @@ {-# SPECIALIZE INLINE encodePrim :: Int8 -> Builder () #-} encodePrim x = do ensureN n- Builder (\ _ k (Buffer (MutablePrimArray mba#) i@(I# i#)) -> do- primitive_ (writeWord8ArrayAs mba# i# x)- k () (Buffer (MutablePrimArray mba#) (i + n)))+ Builder (\ _ k (Buffer mpa i) -> do+ writePrimWord8ArrayAs mpa i x+ k () (Buffer mpa (i + n))) where n = (getUnalignedSize (unalignedSize :: UnalignedSize a)) @@ -498,10 +496,10 @@ {-# INLINE char7 #-} char7 chr = do ensureN 1- Builder (\ _ k (Buffer mba@(MutablePrimArray mba#) i@(I# i#)) -> do+ Builder (\ _ k (Buffer mpa i) -> do let x = V.c2w chr .&. 0x7F- primitive_ (writeWord8ArrayAs mba# i# x)- k () (Buffer mba (i+1)))+ writePrimWord8ArrayAs mpa i x+ k () (Buffer mpa (i+1))) -- | Turn 'String' into 'Builder' with ASCII8 encoding --@@ -521,10 +519,10 @@ {-# INLINE char8 #-} char8 chr = do ensureN 1- Builder (\ _ k (Buffer mba@(MutablePrimArray mba#) i@(I# i#)) -> do+ Builder (\ _ k (Buffer mpa i) -> do let x = V.c2w chr- primitive_ (writeWord8ArrayAs mba# i# x)- k () (Buffer mba (i+1)))+ writePrimWord8ArrayAs mpa i x+ k () (Buffer mpa (i+1))) -- | Write UTF8 encoded 'Text' using 'Builder'. --
Z/Data/CBytes.hs view
@@ -52,6 +52,8 @@ , V.w2c, V.c2w -- * exception , NullPointerException(..)+ -- re-export+ , CString ) where import Control.DeepSeq
Z/Data/JSON/Base.hs view
@@ -701,11 +701,19 @@ B.text . constrFmt s $ conName (undefined :: t c U1 a) -- | Constructor with a single payload-instance (Constructor c, GEncodeJSON (S1 sc f)) => GConstrEncodeJSON (C1 c (S1 sc f)) where+instance (Constructor c, GEncodeJSON (S1 (MetaSel Nothing u ss ds) f))+ => GConstrEncodeJSON (C1 c (S1 (MetaSel Nothing u ss ds) f)) where {-# INLINE gConstrEncodeJSON #-} gConstrEncodeJSON False s (M1 x) = gEncodeJSON s x gConstrEncodeJSON True s (M1 x) = B.curly $ do (constrFmt s $ conName @c undefined) `JB.kv` gEncodeJSON s x++instance (Constructor c, GEncodeJSON (S1 (MetaSel (Just l) u ss ds) f))+ => GConstrEncodeJSON (C1 c (S1 (MetaSel (Just l) u ss ds) f)) where+ {-# INLINE gConstrEncodeJSON #-}+ gConstrEncodeJSON False s (M1 x) = B.curly (gEncodeJSON s x)+ gConstrEncodeJSON True s (M1 x) = B.curly $ do+ (constrFmt s $ conName @c undefined) `JB.kv` B.curly (gEncodeJSON s x) -- | Constructor with multiple payloads instance (GEncodeJSON (a :*: b), GAddPunctuation (a :*: b), Constructor c)
Z/Data/Parser/Base.hs view
@@ -3,7 +3,6 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE MagicHash #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -303,9 +302,9 @@ {-# SPECIALIZE INLINE decodePrim :: Parser Int8 #-} decodePrim = do ensureN n ["Z.Data.Parser.Base.decodePrim: not enough bytes"]- Parser (\ _ k (V.PrimVector (A.PrimArray ba#) i@(I# i#) len) ->- let !r = indexWord8ArrayAs ba# i#- in k r (V.PrimVector (A.PrimArray ba#) (i+n) (len-n)))+ Parser (\ _ k (V.PrimVector ba i len) ->+ let !r = indexPrimWord8ArrayAs ba i+ in k r (V.PrimVector ba (i+n) (len-n))) where n = getUnalignedSize (unalignedSize :: UnalignedSize a) @@ -321,9 +320,9 @@ {-# SPECIALIZE INLINE decodePrimLE :: Parser Int16 #-} decodePrimLE = do ensureN n ["Z.Data.Parser.Base.decodePrimLE: not enough bytes"]- Parser (\ _ k (V.PrimVector (A.PrimArray ba#) i@(I# i#) len) ->- let !r = indexWord8ArrayAs ba# i#- in k (getLE r) (V.PrimVector (A.PrimArray ba#) (i+n) (len-n)))+ Parser (\ _ k (V.PrimVector ba i len) ->+ let !r = indexPrimWord8ArrayAs ba i+ in k (getLE r) (V.PrimVector ba (i+n) (len-n))) where n = getUnalignedSize (unalignedSize :: UnalignedSize (LE a)) @@ -339,9 +338,9 @@ {-# SPECIALIZE INLINE decodePrimBE :: Parser Int16 #-} decodePrimBE = do ensureN n ["Z.Data.Parser.Base.decodePrimBE: not enough bytes"]- Parser (\ _ k (V.PrimVector (A.PrimArray ba#) i@(I# i#) len) ->- let !r = indexWord8ArrayAs ba# i#- in k (getBE r) (V.PrimVector (A.PrimArray ba#) (i+n) (len-n)))+ Parser (\ _ k (V.PrimVector ba i len) ->+ let !r = indexPrimWord8ArrayAs ba i+ in k (getBE r) (V.PrimVector ba (i+n) (len-n))) where n = getUnalignedSize (unalignedSize :: UnalignedSize (BE a))
Z/Data/Text/Builder.hs view
@@ -330,10 +330,17 @@ -------------------------------------------------------------------------------- -- | Newtype wrapper for @[Char]@ to provide textual instances. ----- To encourage using 'Text' as the textual representation, we didn't provide special--- treatment to differentiate instances between @[a]@ and @[Char]@ in various places.+-- We didn't provide special treatment to differentiate instances between @[a]@ and @[Char]@+-- in various classes, e.g. 'Z.Data.JSON.ToJSON'.+-- -- This newtype is therefore to provide instances similar to @T.Text@, in case you really -- need to wrap a 'String'.+--+-- >>> Z.Data.JSON.encodeText ("abc" :: String)+-- > "[\"a\",\"b\",\"c\"]" -- Just like any other [a]'s instance+-- >>> Z.Data.JSON.encodeText . Str $ ("abc" :: String)+-- > "\"abc\""+-- newtype Str = Str { chrs :: [Char] } deriving stock (Eq, Ord, Data, Typeable, Generic) instance Show Str where show = show . chrs
Z/Data/Vector/Base.hs view
@@ -153,28 +153,33 @@ {-# INLINE toArr #-} toArr arr = (arr, 0, sizeofArr arr) {-# INLINE fromArr #-}- fromArr = cloneArr+ fromArr = fromArray instance Vec SmallArray a where type IArray SmallArray = SmallArray {-# INLINE toArr #-} toArr arr = (arr, 0, sizeofArr arr) {-# INLINE fromArr #-}- fromArr = cloneArr+ fromArr = fromArray instance Prim a => Vec PrimArray a where type IArray PrimArray = PrimArray {-# INLINE toArr #-} toArr arr = (arr, 0, sizeofArr arr) {-# INLINE fromArr #-}- fromArr = cloneArr+ fromArr = fromArray instance PrimUnlifted a => Vec UnliftedArray a where type IArray UnliftedArray = UnliftedArray {-# INLINE toArr #-} toArr arr = (arr, 0, sizeofArr arr) {-# INLINE fromArr #-}- fromArr = cloneArr+ fromArr = fromArray++fromArray :: Arr arr a => arr a -> Int -> Int -> arr a+{-# INLINE fromArray #-}+fromArray arr offset len | offset == 0 && sizeofArr arr == len = arr+ | otherwise = cloneArr arr offset len -- | A pattern synonyms for matching the underline array, offset and length. --
test/Z/Data/Array/UnalignedAccessSpec.hs view
@@ -21,274 +21,274 @@ spec = describe "unaligned acess" . modifyMaxSuccess (*10) . modifyMaxSize (*10) $ do prop "roundtrip Word8" $ \ (w::Word8) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Word16" $ \ (w::Word16) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Word32" $ \ (w::Word32) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Word64" $ \ (w::Word64) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Word" $ \ (w::Word) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Word16" $ \ (w::Word16) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Word32" $ \ (w::Word32) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Word64" $ \ (w::Word64) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Word" $ \ (w::Word) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Word16" $ \ (w::Word16) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Word32" $ \ (w::Word32) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Word64" $ \ (w::Word64) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Word" $ \ (w::Word) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') -------------------------------------------------------------------------------- prop "roundtrip Int16" $ \ (w::Int16) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Int16" $ \ (w::Int16) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Int16" $ \ (w::Int16) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Int32" $ \ (w::Int32) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Int32" $ \ (w::Int32) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Int32" $ \ (w::Int32) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Int64" $ \ (w::Int64) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Int64" $ \ (w::Int64) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Int64" $ \ (w::Int64) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Int" $ \ (w::Int) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Int" $ \ (w::Int) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Int" $ \ (w::Int) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Float" $ \ (w::Float) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Float" $ \ (w::Float) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Float" $ \ (w::Float) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Double" $ \ (w::Double) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Double" $ \ (w::Double) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Double" $ \ (w::Double) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip Char" $ \ (w::Char) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# w)- w' <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# w)+ w' <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let w'' = indexWord8ArrayAs ba# 7#+ let w'' = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip LE Char" $ \ (w::Char) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (LE w))- (LE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (LE w))+ (LE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (LE w'') = indexWord8ArrayAs ba# 7#+ let (LE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'') prop "roundtrip BE Char" $ \ (w::Char) -> ioProperty $ do mba@(MutableByteArray mba#) <- newByteArray 128- primitive_ (writeWord8ArrayAs mba# 7# (BE w))- (BE w') <- primitive (readWord8ArrayAs mba# 7#)+ primitive_ (writeWord8ArrayAs# mba# 7# (BE w))+ (BE w') <- primitive (readWord8ArrayAs# mba# 7#) (ByteArray ba#) <- unsafeFreezeByteArray mba- let (BE w'') = indexWord8ArrayAs ba# 7#+ let (BE w'') = indexWord8ArrayAs# ba# 7# return $ (w === w') .&&. (w === w'')
test/Z/Data/JSON/BaseSpec.hs view
@@ -29,6 +29,8 @@ , testTwo :: Maybe Bool , testThree :: Maybe a }++ | RecordII { testFour :: Double } | List [a] deriving (Show, Eq, Generic, FromValue, ToValue, EncodeJSON) @@ -51,6 +53,10 @@ \\"testOne\":0.123456,\ \\"testTwo\":null,\ \\"testThree\":123456}}"++ it "Record are encoded as key values(single field)" $+ JSON.encodeText (RecordII 0.123456 :: T Integer) ===+ "{\"RecordII\":{\"testFour\":0.123456}}" it "List are encode as array" $ JSON.encodeText (List [Nullary