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