| base-4.2.0.2: Basic libraries | Contents | Index

GHC.IO.Device

Portability | non-portable
Stability | internal
Maintainer | libraries@haskell.org

Description
Type classes for I/O providers.
Synopsis

class RawIO a where

read :: a -> Ptr Word8 -> Int -> IO Int
readNonBlocking :: a -> Ptr Word8 -> Int -> IO (Maybe Int)
write :: a -> Ptr Word8 -> Int -> IO ()
writeNonBlocking :: a -> Ptr Word8 -> Int -> IO Int

class IODevice a where

ready :: a -> Bool -> Int -> IO Bool
close :: a -> IO ()
isTerminal :: a -> IO Bool
isSeekable :: a -> IO Bool
seek :: a -> SeekMode -> Integer -> IO ()
tell :: a -> IO Integer
getSize :: a -> IO Integer
setSize :: a -> Integer -> IO ()
setEcho :: a -> Bool -> IO ()
getEcho :: a -> IO Bool
setRaw :: a -> Bool -> IO ()
devType :: a -> IO IODeviceType
dup :: a -> IO a
dup2 :: a -> a -> IO a

data IODeviceType

= Directory
| Stream
| RegularFile
| RawDevice

data SeekMode

= AbsoluteSeek
| RelativeSeek
| SeekFromEnd

Documentation
class RawIO a where

A low-level I/O provider where the data is bytes in memory.
Methods

read :: a -> Ptr Word8 -> Int -> IO Int
Read up to the specified number of bytes, returning the number of bytes actually read. This function should only block if there is no data available. If there is not enough data available, then the function should just return the available data. A return value of zero indicates that the end of the data stream (e.g. end of file) has been reached.
readNonBlocking :: a -> Ptr Word8 -> Int -> IO (Maybe Int)
Read up to the specified number of bytes, returning the number of bytes actually read, or `Nothing` if the end of the stream has been reached.
write :: a -> Ptr Word8 -> Int -> IO ()
Write the specified number of bytes.
writeNonBlocking :: a -> Ptr Word8 -> Int -> IO Int
Write up to the specified number of bytes without blocking. Returns the actual number of bytes written.

Instances

RawIO FD

class IODevice a where

I/O operations required for implementing a Handle.
Methods

ready :: a -> Bool -> Int -> IO Bool
`ready dev write msecs` returns `True` if the device has data to read (if `write` is `False`) or space to write new data (if `write` is `True`). `msecs` specifies how long to wait, in milliseconds.
close :: a -> IO ()
closes the device. Further operations on the device should produce exceptions.
isTerminal :: a -> IO Bool
returns `True` if the device is a terminal or console.
isSeekable :: a -> IO Bool
returns `True` if the device supports `seek` operations.
seek :: a -> SeekMode -> Integer -> IO ()
seek to the specified position in the data.
tell :: a -> IO Integer
return the current position in the data.
getSize :: a -> IO Integer
return the size of the data.
setSize :: a -> Integer -> IO ()
change the size of the data.
setEcho :: a -> Bool -> IO ()
for terminal devices, changes whether characters are echoed on the device.
getEcho :: a -> IO Bool
returns the current echoing status.
setRaw :: a -> Bool -> IO ()
some devices (e.g. terminals) support a raw mode where characters entered are immediately made available to the program. If available, this operations enables raw mode.
devType :: a -> IO IODeviceType
returns the `IODeviceType` corresponding to this device.
dup :: a -> IO a
duplicates the device, if possible. The new device is expected to share a file pointer with the original device (like Unix `dup`).
dup2 :: a -> a -> IO a
`dup2 source target` replaces the target device with the source device. The target device is closed first, if necessary, and then it is made into a duplicate of the first device (like Unix `dup2`).

Instances

IODevice FD

data IODeviceType

Constructors

Directory |
Stream |
RegularFile |
RawDevice |

Instances

Eq IODeviceType

data SeekMode

A mode that determines the effect of hSeek `hdl mode i`, as follows:
Constructors

AbsoluteSeek | the position of `hdl` is set to `i`.
RelativeSeek | the position of `hdl` is set to offset `i` from the current position.
SeekFromEnd | the position of `hdl` is set to offset `i` from the end of the file.

Instances

Enum SeekMode
Eq SeekMode
Ord SeekMode
Read SeekMode
Show SeekMode
Ix SeekMode

Produced by Haddock version 2.6.1