binary-instances 1.0.2 → 1.0.3
raw patch · 5 files changed
+50/−11 lines, 5 filesdep +primitivedep ~basedep ~binary-orphansdep ~quickcheck-instancesPVP ok
version bump matches the API change (PVP)
Dependencies added: primitive
Dependency ranges changed: base, binary-orphans, quickcheck-instances
API changes (from Hackage documentation)
+ Data.Binary.Instances.Primitive: instance Data.Binary.Class.Binary Data.Primitive.ByteArray.ByteArray
Files
- CHANGELOG.md +4/−0
- binary-instances.cabal +16/−11
- src/Data/Binary/Instances.hs +1/−0
- src/Data/Binary/Instances/Primitive.hs +27/−0
- test/Tests.hs +2/−0
CHANGELOG.md view
@@ -1,3 +1,7 @@+## 1.0.3++- Add instance for `primitive`s `ByteArray`.+ ## 1.0.2 - Support `aeson-2.0.0.0`
binary-instances.cabal view
@@ -1,5 +1,5 @@ name: binary-instances-version: 1.0.2+version: 1.0.3 synopsis: Orphan instances for binary description: `binary-instances` defines orphan instances for types in some popular packages.@@ -22,8 +22,10 @@ || ==8.4.4 || ==8.6.5 || ==8.8.4- || ==8.10.4- || ==9.0.1+ || ==8.10.7+ || ==9.0.2+ || ==9.2.4+ || ==9.4.1 extra-source-files: CHANGELOG.md @@ -35,19 +37,20 @@ default-language: Haskell2010 hs-source-dirs: src build-depends:- aeson >=0.7.0.6 && <1.6 || >=2.0.0.0 && <2.1- , base >=4.6.0.1 && <4.16- , binary >=0.5.1.1 && <0.8.9- , binary-orphans >=1.0.1 && <1.1+ aeson >=0.7.0.6 && <1.6 || >=2.0.0.0 && <2.2+ , base >=4.6.0.1 && <4.18+ , binary >=0.5.1.1 && <0.8.10+ , binary-orphans >=1.0.3 && <1.1 , case-insensitive >=1.2.0.4 && <1.2.2- , hashable >=1.2.3.3 && <1.4+ , hashable >=1.2.3.3 && <1.5+ , primitive >=0.7.2.0 && <0.8 , scientific >=0.3.3.8 && <0.4 , tagged >=0.7.3 && <0.8.7- , text >=1.2.0.6 && <1.3+ , text >=1.2.0.6 && <1.3 || >=2.0 && <2.1 , text-binary >=0.2.1.1 && <0.3 , time-compat >=1.9.4 && <1.10 , unordered-containers >=0.2.5.1 && <0.3- , vector >=0.10.12.3 && <0.13+ , vector >=0.10.12.3 && <0.14 , vector-binary-instances >=0.2.1.0 && <0.3 exposed-modules:@@ -55,6 +58,7 @@ Data.Binary.Instances.Aeson Data.Binary.Instances.CaseInsensitive Data.Binary.Instances.Hashable+ Data.Binary.Instances.Primitive Data.Binary.Instances.Scientific Data.Binary.Instances.Tagged Data.Binary.Instances.Text@@ -76,8 +80,9 @@ , bytestring , case-insensitive , hashable+ , primitive , QuickCheck >=2.13.1 && <2.15- , quickcheck-instances >=0.3.25 && <0.4+ , quickcheck-instances >=0.3.28 && <0.4 , scientific , tagged , tasty >=0.10.1.2 && <1.5
src/Data/Binary/Instances.hs view
@@ -28,6 +28,7 @@ import Data.Binary.Instances.Aeson () import Data.Binary.Instances.CaseInsensitive () import Data.Binary.Instances.Hashable ()+import Data.Binary.Instances.Primitive () import Data.Binary.Instances.Scientific () import Data.Binary.Instances.Tagged () import Data.Binary.Instances.Text ()
+ src/Data/Binary/Instances/Primitive.hs view
@@ -0,0 +1,27 @@+{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.Binary.Instances.Primitive where++import Data.Binary.Orphans ()++import Control.Monad (replicateM)+import Data.Binary (Binary, Get, Put, get, put)+import Data.Word (Word8)++import qualified Data.Primitive as Prim++-- | @since 1.0.3+instance Binary Prim.ByteArray where+ put ba = put maxI >> go 0+ where+ maxI :: Int+ maxI = Prim.sizeofByteArray ba++ go :: Int -> Put+ go i | i < maxI = put (Prim.indexByteArray ba i :: Word8) >> go (i + 1)+ | otherwise = return ()++ get = do+ len <- get+ xs <- replicateM len get+ return (Prim.byteArrayFromListN len (xs :: [Word8]))
test/Tests.hs view
@@ -23,6 +23,7 @@ import qualified Data.Vector.Unboxed as VU +import qualified Data.Primitive as Prim import qualified Data.Time.Calendar.Compat as Time import qualified Data.Time.Calendar.Month.Compat as Time import qualified Data.Time.Calendar.Quarter.Compat as Time@@ -70,6 +71,7 @@ -- vector , roundtripProperty (undefined :: Vector Char) , roundtripProperty (undefined :: VU.Vector Char)+ , roundtripProperty (undefined :: Prim.ByteArray) ] roundtrip :: (Eq a, Show a, Binary a) => a -> a -> Property