| Copyright | 2011 John Millikin |
|---|---|
| License | MIT |
| Maintainer | n@monade.li |
| Portability | GHC only |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.Knob
Description
Create memory-backed Handles, 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 Handles 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 #
Arguments
| :: MonadIO m | |
| => Knob | |
| -> String | Filename shown in error messages. |
| -> IOMode | |
| -> (Handle -> IO a) | |
| -> m a |
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 Methods 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 Methods 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 # | |