-- | Strict @ByteString@. Import as: -- -- > import qualified RIO.ByteString as B {-# LANGUAGE NoImplicitPrelude #-} 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