module Data.ByteString.Char8.SaferFileHandles
( hGetLine
, hGetContents
, hGet
, hGetNonBlocking
, hPut
, hPutStr
, hPutStrLn
) where
import Data.Int ( Int )
import Control.Monad.IO.Class ( MonadIO )
import qualified Data.ByteString.Char8 as B
import Control.Monad.Trans.Region ( ParentOf )
import qualified Data.ByteString.Char8.ExplicitIOModes as E ( hGetLine
, hGetContents
, hGet
, hGetNonBlocking
, hPut
, hPutStr
, hPutStrLn
)
import System.IO.SaferFileHandles ( RegionalFileHandle
, ReadModes, WriteModes
)
import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 )
hGetLine ∷ (pr `ParentOf` cr, MonadIO cr, ReadModes ioMode)
⇒ RegionalFileHandle ioMode pr → cr B.ByteString
hGetLine = wrap E.hGetLine
hGetContents ∷ (pr `ParentOf` cr, MonadIO cr, ReadModes ioMode)
⇒ RegionalFileHandle ioMode pr → cr B.ByteString
hGetContents = wrap E.hGetContents
hGet ∷ (pr `ParentOf` cr, MonadIO cr, ReadModes ioMode)
⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString
hGet = wrap2 E.hGet
hGetNonBlocking ∷ (pr `ParentOf` cr, MonadIO cr, ReadModes ioMode)
⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString
hGetNonBlocking = wrap2 E.hGetNonBlocking
hPut ∷ (pr `ParentOf` cr, MonadIO cr, WriteModes ioMode)
⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()
hPut = wrap2 E.hPut
hPutStr ∷ (pr `ParentOf` cr, MonadIO cr, WriteModes ioMode)
⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()
hPutStr = wrap2 E.hPutStr
hPutStrLn ∷ (pr `ParentOf` cr, MonadIO cr, WriteModes ioMode)
⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()
hPutStrLn = wrap2 E.hPutStrLn