{-# LANGUAGE TypeSynonymInstances #-} --------------------------------------------------------- -- -- Module : Data.ByteString.Class -- Copyright : Michael Snoyman -- License : BSD3 -- -- Maintainer : Michael Snoyman -- Stability : Stable -- Portability : portable -- -- Classes for automatic conversion to and from strict and lazy bytestrings. -- -- Please note: the instance for 'String' uses UTF-8 encoding. -- --------------------------------------------------------- module Data.ByteString.Class ( StrictByteString (..) , LazyByteString (..) ) where import qualified Data.ByteString as S import qualified Data.ByteString.UTF8 as SU import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Lazy.UTF8 as LU class StrictByteString a where toStrictByteString :: a -> S.ByteString fromStrictByteString :: S.ByteString -> a instance StrictByteString S.ByteString where toStrictByteString = id fromStrictByteString = id instance StrictByteString L.ByteString where toStrictByteString = S.concat . L.toChunks fromStrictByteString = L.fromChunks . return instance StrictByteString String where toStrictByteString = SU.fromString fromStrictByteString = SU.toString class LazyByteString a where toLazyByteString :: a -> L.ByteString fromLazyByteString :: L.ByteString -> a instance LazyByteString L.ByteString where toLazyByteString = id fromLazyByteString = id instance LazyByteString S.ByteString where toLazyByteString = fromStrictByteString fromLazyByteString = toStrictByteString instance LazyByteString String where toLazyByteString = LU.fromString fromLazyByteString = LU.toString