GHC.IO.Device
| Авторское право | (c) The University of Glasgow 1994-2008 |
|---|---|
| Лицензия | see libraries/base/LICENSE |
| Сопровождающий | libraries@haskell.org |
| Стабильность | internal |
| Переносимость | non-portable |
| Безопасный Haskell | Safe |
| Язык | Haskell2010 |
Описание
Классы типов для поставщиков операций ввода-вывода.
API этого модуля нестабилен и не предназначен для использования широкой публикой. Если вам совершенно необходимо от него зависеть, обязательно используйте строгую верхнюю границу версии, например base < 4.X вместо base < 5, поскольку интерфейс может быстро измениться без особого предупреждения.
class RawIO a where Исходный код
Низкоуровневый поставщик операций ввода-вывода, в котором данные представлены байтами в памяти. Смещения Word64 в настоящее время не влияют на системы POSIX и консоли, где предполагается неявное поведение среды выполнения C: перемещение указателя файла при каждом чтении или записи без необходимости явного позиционирования.
Методы
read :: a -> Ptr Word8 -> Word64 -> Int -> IO Int Исходный код
Считать до указанного количества байтов, начиная с заданного смещения, и вернуть фактически считанное число байтов. Эта функция должна блокироваться только при отсутствии доступных данных. Если доступно недостаточно данных, функция должна просто вернуть имеющиеся данные. Возвращаемое значение, равное нулю, указывает на достижение конца потока данных (например, конца файла).
readNonBlocking :: a -> Ptr Word8 -> Word64 -> Int -> IO (Maybe Int) Исходный код
Считать до указанного количества байтов, начиная с заданного смещения, и вернуть фактически считанное число байтов или Nothing, если достигнут конец потока.
write :: a -> Ptr Word8 -> Word64 -> Int -> IO () Исходный код
Записать указанное число байтов, начиная с заданного смещения.
writeNonBlocking :: a -> Ptr Word8 -> Word64 -> Int -> IO Int Исходный код
Записать до указанного количества байтов, не блокируясь, начиная с заданного смещения. Возвращает фактическое число записанных байтов.
Экземпляры
| RawIO FD Исходный код | Начиная с: base-4.1.0.0 |
Определён в GHC.Internal.IO.FD | |
class IODevice a where Исходный код
Операции ввода-вывода, необходимые для реализации Handle.
Методы
ready :: a -> Bool -> Int -> IO Bool Исходный код
ready dev write msecs возвращает True, если устройство готово к чтению данных (если write — False) или к записи новых данных (если write — True). msecs задаёт время ожидания в миллисекундах.
close :: a -> IO () Исходный код
Закрывает устройство. Последующие операции с устройством должны вызывать исключения.
isTerminal :: a -> IO Bool Исходный код
Возвращает True, если устройство является терминалом или консолью.
isSeekable :: a -> IO Bool Исходный код
Возвращает True, если устройство поддерживает операции seek.
seek :: a -> SeekMode -> Integer -> IO Integer Исходный код
Перейти к указанной позиции в данных.
tell :: a -> IO Integer Исходный код
Возвращает текущую позицию в данных.
getSize :: a -> IO Integer Исходный код
Возвращает размер данных.
setSize :: a -> Integer -> IO () Исходный код
Изменяет размер данных.
setEcho :: a -> Bool -> IO () Исходный код
Для терминальных устройств изменяет режим эхо-отображения вводимых символов.
getEcho :: a -> IO Bool Исходный код
Возвращает текущее состояние эхо-отображения.
setRaw :: a -> Bool -> IO () Исходный код
Некоторые устройства (например, терминалы) поддерживают режим «raw», в котором вводимые символы сразу становятся доступными программе. Если эта возможность поддерживается, данная операция включает режим raw.
devType :: a -> IO IODeviceType Исходный код
Возвращает IODeviceType, соответствующий этому устройству.
dup :: a -> IO a Исходный код
Создаёт дубликат устройства, если это возможно. Предполагается, что новое устройство использует общий указатель файла с исходным устройством (как Unix dup).
dup2 :: a -> a -> IO a Исходный код
dup2 source target заменяет целевое устройство исходным устройством. При необходимости целевое устройство сначала закрывается, а затем становится дубликатом первого устройства (как Unix dup2).
Экземпляры
| IODevice FD Исходный код | Начиная с: base-4.1.0.0 |
Определён в GHC.Internal.IO.FD Методыready :: FD -> Bool -> Int -> IO Bool Исходный код close :: FD -> IO () Исходный код isTerminal :: FD -> IO Bool Исходный код isSeekable :: FD -> IO Bool Исходный код seek :: FD -> SeekMode -> Integer -> IO Integer Исходный код tell :: FD -> IO Integer Исходный код getSize :: FD -> IO Integer Исходный код setSize :: FD -> Integer -> IO () Исходный код setEcho :: FD -> Bool -> IO () Исходный код getEcho :: FD -> IO Bool Исходный код setRaw :: FD -> Bool -> IO () Исходный код devType :: FD -> IO IODeviceType Исходный код dup :: FD -> IO FD Исходный код | |
data IODeviceType Исходный код
Тип устройства, которое можно использовать для реализации Handle (см. также mkFileHandle). Стандартные библиотеки предоставляют возможность создавать Handles с помощью файловых операций Posix с файловыми дескрипторами (см. mkHandleFromFD); FD является базовым экземпляром IODevice.
Пользователи могут предоставлять собственные экземпляры IODevice, которые должны соответствовать следующим правилам:
Конструкторы
| Directory | Стандартные библиотеки не поддерживают этот тип устройства напрямую, однако ожидается, что пользовательская реализация будет предоставлять список имён файлов в каталоге в произвольном порядке, разделённых символами |
| Stream | Дуплексный канал связи (приводит к созданию дуплексного |
| RegularFile | Файл, который можно читать и записывать, а также перемещаться по нему. |
| RawDevice | «Сырое» дисковое устройство, поддерживающее блочные двоичные операции чтения и записи; перемещение по нему возможно только к позициям с определённой гранулярностью (выровненным по границе блока). |
Экземпляры
| Eq IODeviceType Исходный код | Начиная с: base-4.2.0.0 |
Определён в GHC.Internal.IO.Device Методы(==) :: IODeviceType -> IODeviceType -> Bool Исходный код (/=) :: IODeviceType -> IODeviceType -> Bool Исходный код | |
data SeekMode Исходный код
Режим, определяющий действие hSeek hdl mode i.
Конструкторы
| AbsoluteSeek | Позиция |
| RelativeSeek | Позиция |
| SeekFromEnd | Позиция |
Экземпляры
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/GHC-IO-Device.html