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