packages feed

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 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