{-# LANGUAGE CPP #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -- | -- Module: $HEADER$ -- Description: Default instances for (strict and lazy) ByteString and -- ByteString Builder. -- Copyright: (c) 2016, Peter Trško -- License: BSD3 -- -- Maintainer: peter.trsko@gmail.com -- Stability: stable -- Portability: CPP, NoImplicitPrelude -- -- 'Default' instances for (strict) 'Strict.ByteString', (lazy) -- 'Lazy.ByteString' and 'Builder' from -- package. module Data.Default.Instances.ByteString ( -- $providedInstances ) where #if MIN_VERSION_bytestring(0,10,0) -- Importing mempty only for Builder instance. Builder is not available before -- bytestring ==0.10. import Data.Monoid (Monoid(mempty)) #endif import qualified Data.ByteString as Strict (ByteString) import qualified Data.ByteString as Strict.ByteString (empty) import qualified Data.ByteString.Lazy as Lazy (ByteString) import qualified Data.ByteString.Lazy as Lazy.ByteString (empty) #if MIN_VERSION_bytestring(0,10,2) -- Builder moved from Data.ByteString.Lazy.Builder to Data.ByteString.Builder -- module in version 0.10.2.0. import Data.ByteString.Builder (Builder) #elif MIN_VERSION_bytestring(0,10,0) import Data.ByteString.Lazy.Builder (Builder) #endif #if MIN_VERSION_bytestring(0,10,4) import Data.ByteString.Short (ShortByteString) import qualified Data.ByteString.Short as ShortByteString (empty) #endif import Data.Default.Class (Default(def)) -- | @'def' = 'Strict.ByteString.empty'@ instance Default Strict.ByteString where def = Strict.ByteString.empty {-# INLINE def #-} -- | @'def' = 'Lazy.ByteString.empty'@ instance Default Lazy.ByteString where def = Lazy.ByteString.empty {-# INLINE def #-} #if MIN_VERSION_bytestring(0,10,0) -- Version 0.10.0.0 is the first that introduced Builder. -- | @'def' = 'mempty'@ instance Default Builder where -- Using mempty implies that we need dependency on base, other option would -- be to depend on internal module of bytestring package. Considering the -- first option to be the lesser of two evils. def = mempty {-# INLINE def #-} #endif #if MIN_VERSION_bytestring(0,10,4) -- Version 0.10.4.0 is the first that introduced ShortByteString. -- | @'def' = 'ShortByteString.empty'@ instance Default ShortByteString where def = ShortByteString.empty {-# INLINE def #-} #endif -- $providedInstances -- -- Following instances are provided: -- -- @ -- -- Strict ByteString: -- instance 'Default' 'Strict.ByteString' where -- 'def' = 'Strict.ByteString.empty' -- -- -- Lazy ByteString: -- instance 'Default' 'Lazy.ByteString' where -- 'def' = 'Lazy.ByteString.empty' -- @ -- -- Following instance is provided only for -- >=0.10, since -- that it the version that introduced 'Builder': -- -- @ -- instance 'Default' 'Builder' where -- 'def' = 'mempty' -- @ -- -- Following instance is provided only for -- >=0.10.4, since -- that it the version that introduced 'ShortByteString': -- -- @ -- instance 'Default' 'ShortByteString' where -- 'def' = 'ShortByteString.empty' -- @