module System.Process.Read.Instances where
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import Data.Int (Int64)
import qualified Data.Text as T
import qualified Data.Text.Lazy as LT
import Data.Word (Word8)
import Prelude hiding (catch)
import System.IO (hSetBinaryMode)
import System.Process.Read.Chars (ListLikePlus(..))
instance ListLikePlus String Char where
type LengthType String = Int
binary _ = mapM_ (\ h -> hSetBinaryMode h True)
lazy _ = True
length' = length
instance ListLikePlus B.ByteString Word8 where
type LengthType B.ByteString = Int
binary _ = mapM_ (\ h -> hSetBinaryMode h True)
lazy _ = False
length' = B.length
instance ListLikePlus L.ByteString Word8 where
type LengthType L.ByteString = Int64
binary _ = mapM_ (\ h -> hSetBinaryMode h True)
lazy _ = True
length' = L.length
instance ListLikePlus T.Text Char where
type LengthType T.Text = Int
binary _ _ = return ()
lazy _ = False
length' = T.length
instance ListLikePlus LT.Text Char where
type LengthType LT.Text = Int64
binary _ _ = return ()
lazy _ = True
length' = LT.length