packages feed

generic-binary 1.0.0 → 1.0.1

raw patch · 2 files changed

+19/−4 lines, 2 filesdep +bytestringPVP ok

version bump matches the API change (PVP)

Dependencies added: bytestring

API changes (from Hackage documentation)

+ Data.Binary.Generic: decode :: (Generic a, GBinary (Rep a)) => ByteString -> a
+ Data.Binary.Generic: encode :: (Generic a, GBinary (Rep a)) => a -> ByteString

Files

generic-binary.cabal view
@@ -1,5 +1,5 @@ Name:              generic-binary-Version:           1.0.0+Version:           1.0.1 Description:       Generic Data.Binary derivation using GHC generics. Synopsis:          Generic Data.Binary derivation using GHC generics. Category:          Generics, Data@@ -22,3 +22,4 @@   Build-Depends:     base >= 4.0 && < 4.5                    , ghc-prim < 0.3                    , binary >= 0.5 && < 0.6+                   , bytestring >= 0.9 && < 0.10
src/Data/Binary/Generic.hs view
@@ -3,14 +3,28 @@   , FlexibleInstances   , TypeOperators  #-}-module Data.Binary.Generic (put, get) where+module Data.Binary.Generic+( encode+, decode+, put+, get+) where  import Control.Applicative import GHC.Generics-import Data.Binary hiding (put, get)+import Data.Binary (Binary, Put, Get)+import Data.Binary.Get (runGet)+import Data.Binary.Put (runPut)+import Data.ByteString.Lazy  import qualified Data.Binary as B +encode :: (Generic a, GBinary (Rep a)) => a -> ByteString+encode = runPut . put++decode :: (Generic a, GBinary (Rep a)) => ByteString -> a+decode = runGet get+ put :: (Generic a, GBinary (Rep a)) => a -> Put put = gput . from @@ -32,7 +46,7 @@ instance (GBinary a, GBinary b) => GBinary (a :+: b) where   gput (L1 l) = do B.put False; gput l   gput (R1 r) = do B.put True; gput r-  gget = B.get >>= \v -> if v then L1 <$> gget else R1 <$> gget+  gget = B.get >>= \v -> if not v then L1 <$> gget else R1 <$> gget  instance GBinary a => GBinary (M1 D c a) where   gput = gput . unM1