{-# LANGUAGE NoImplicitPrelude #-} -- | Strict @ByteString@. Import as: -- -- > import qualified RIO.ByteString as B -- -- This module does not export any partial functions. For those, see -- "RIO.ByteString.Partial" module RIO.ByteString ( module Data.ByteString , module RIO.ByteString ) where import Data.ByteString hiding (head, last, tail, init, foldl1, foldl1', foldr1, foldr1', maximum, minimum, findSubstring, findSubstrings, packCString, packCStringLen, useAsCString, useAsCStringLen, getLine, getContents, putStr, putStrLn, interact, readFile, writeFile, appendFile, hGetLine, hGetContents, hGet, hGetSome, hGetNonBlocking, hPut, hPutNonBlocking, hPutStr, hPutStrLn, breakByte) import qualified Data.ByteString as B import RIO import Foreign.C.String (CString, CStringLen) -- | Lifted 'B.packCString' packCString :: MonadIO m => CString -> m ByteString packCString = liftIO . B.packCString -- | Lifted 'B.packCStringLen' packCStringLen :: MonadIO m => CStringLen -> m ByteString packCStringLen = liftIO . B.packCStringLen -- | Unlifted 'B.useAsCString' useAsCString :: MonadUnliftIO m => ByteString -> (CString -> m a) -> m a useAsCString bs inner = withRunInIO $ \run -> B.useAsCString bs $ run . inner -- | Unlifted 'B.useAsCStringLen' useAsCStringLen :: MonadUnliftIO m => ByteString -> (CStringLen -> m a) -> m a useAsCStringLen bs inner = withRunInIO $ \run -> B.useAsCStringLen bs $ run . inner -- | Lifted 'B.getLine' getLine :: MonadIO m => m ByteString getLine = liftIO B.getLine -- | Lifted 'B.getContents' getContents :: MonadIO m => m ByteString getContents = liftIO B.getContents -- | Lifted 'B.putStr' putStr :: MonadIO m => ByteString -> m () putStr = liftIO . B.putStr -- | Lifted 'B.interact' interact :: MonadIO m => (ByteString -> ByteString) -> m () interact = liftIO . B.interact -- | Lifted 'B.readFile' readFile :: MonadIO m => FilePath -> m ByteString readFile = liftIO . B.readFile -- | Lifted 'B.writeFile' writeFile :: MonadIO m => FilePath -> ByteString -> m () writeFile fp = liftIO . B.writeFile fp -- | Lifted 'B.appendFile' appendFile :: MonadIO m => FilePath -> ByteString -> m () appendFile fp = liftIO . B.appendFile fp -- | Lifted 'B.hGetLine' hGetLine :: MonadIO m => Handle -> m ByteString hGetLine = liftIO . B.hGetLine -- | Lifted 'B.hGetContents' hGetContents :: MonadIO m => Handle -> m ByteString hGetContents = liftIO . B.hGetContents -- | Lifted 'B.hGet' hGet :: MonadIO m => Handle -> Int -> m ByteString hGet h = liftIO . B.hGet h -- | Lifted 'B.hGetSome' hGetSome :: MonadIO m => Handle -> Int -> m ByteString hGetSome h = liftIO . B.hGetSome h -- | Lifted 'B.hGetNonBlocking' hGetNonBlocking :: MonadIO m => Handle -> Int -> m ByteString hGetNonBlocking h = liftIO . B.hGetNonBlocking h -- | Lifted 'B.hPut' hPut :: MonadIO m => Handle -> ByteString -> m () hPut h = liftIO . B.hPut h -- | Lifted 'B.hPutNonBlocking' hPutNonBlocking :: MonadIO m => Handle -> ByteString -> m ByteString hPutNonBlocking h = liftIO . B.hPutNonBlocking h -- | Lifted 'B.hPutStr' hPutStr :: MonadIO m => Handle -> ByteString -> m () hPutStr h = liftIO . B.hPutStr h