{-# LANGUAGE MultiParamTypeClasses , FlexibleInstances , FlexibleContexts , UndecidableInstances #-} {-| Module: Test.Serialization.Symbiote.Cereal.Lazy Copyright: (c) 2019 Athan Clark License: BSD-3-Style Maintainer: athan.clark@gmail.com Portability: GHC -} module Test.Serialization.Symbiote.Cereal.Lazy where import Test.Serialization.Symbiote (SymbioteOperation, Symbiote (..), Operation) import qualified Data.Serialize as Cereal import qualified Data.ByteString.Lazy as LBS instance ( Cereal.Serialize a , Cereal.Serialize o , Cereal.Serialize (Operation a) , SymbioteOperation a o ) => Symbiote a o LBS.ByteString where encode = Cereal.encodeLazy decode x = case Cereal.decodeLazy x of Left _ -> Nothing Right y -> Just y encodeOp = Cereal.encodeLazy decodeOp x = case Cereal.decodeLazy x of Left _ -> Nothing Right y -> Just y encodeOut _ = Cereal.encodeLazy decodeOut _ x = case Cereal.decodeLazy x of Left _ -> Nothing Right y -> Just y