Copyright | 2011 John Millikin |
---|---|
License | MIT |
Maintainer | n@monade.li |
Portability | GHC only |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Create memory-backed Handle
s, referencing virtual files. This is
mostly useful for testing Handle
-based APIs without having to
interact with the filesystem.
import Data.ByteString (pack) import Data.Knob import System.IO main = do knob <- newKnob (pack []) h <- newFileHandle knob "test.txt" WriteMode hPutStrLn h "Hello world!" hClose h bytes <- Data.Knob.getContents knob putStrLn ("Wrote bytes: " ++ show bytes)
Synopsis
- data Knob
- newKnob :: MonadIO m => ByteString -> m Knob
- getContents :: MonadIO m => Knob -> m ByteString
- setContents :: MonadIO m => Knob -> ByteString -> m ()
- newFileHandle :: MonadIO m => Knob -> String -> IOMode -> m Handle
- withFileHandle :: MonadIO m => Knob -> String -> IOMode -> (Handle -> IO a) -> m a
- data Device
- newDevice :: MonadIO m => Knob -> IOMode -> m Device
Documentation
A knob is a basic virtual file, which contains a byte buffer. A knob can
have multiple Handle
s open to it, each of which behaves like a standard
file handle.
Use getContents
and setContents
to inspect and modify the knob's
byte buffer.
getContents :: MonadIO m => Knob -> m ByteString Source #
setContents :: MonadIO m => Knob -> ByteString -> m () Source #
See newFileHandle
.
An IO device backed by a Knob
. You shouldn't usually use this type directly;
use newFileHandle
or withFileHandle
instead.
Instances
BufferedIO Device Source # | |
Defined in Data.Knob newBuffer :: Device -> BufferState -> IO (Buffer Word8) # fillReadBuffer :: Device -> Buffer Word8 -> IO (Int, Buffer Word8) # fillReadBuffer0 :: Device -> Buffer Word8 -> IO (Maybe Int, Buffer Word8) # emptyWriteBuffer :: Device -> Buffer Word8 -> IO (Buffer Word8) # flushWriteBuffer :: Device -> Buffer Word8 -> IO (Buffer Word8) # flushWriteBuffer0 :: Device -> Buffer Word8 -> IO (Int, Buffer Word8) # | |
IODevice Device Source # | |
Defined in Data.Knob ready :: Device -> Bool -> Int -> IO Bool # isTerminal :: Device -> IO Bool # isSeekable :: Device -> IO Bool # seek :: Device -> SeekMode -> Integer -> IO Integer # tell :: Device -> IO Integer # getSize :: Device -> IO Integer # setSize :: Device -> Integer -> IO () # setEcho :: Device -> Bool -> IO () # getEcho :: Device -> IO Bool # setRaw :: Device -> Bool -> IO () # devType :: Device -> IO IODeviceType # | |
RawIO Device Source # | |