GHC.IO.Device
| Авторские права | (c) Университет Глазго 1994-2008 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Поддерживающий | libraries@haskell.org |
| Стабильность | внутренняя |
| Переносимость | непереносимая |
| Safe Haskell | Безопасный |
| Язык | Haskell2010 |
Описание
Типы классов для поставщиков ввода-вывода.
API данного модуля нестабилен и не предназначен для использования широкой публикой. Если вам абсолютно необходимо зависеть от него, убедитесь, что вы используете жёсткую верхнюю границу, например, base < 4.X, а не base < 5, так как интерфейс может быстро меняться без предупреждения.
Поставщик ввода-вывода низкого уровня, где данные представляют собой байты в памяти. Смещения Word64 в настоящее время не имеют никакого эффекта на системах POSIX или консолях, где предполагается, что неявное поведение C-runtime перемещает указатель файла при каждом чтении/записи без необходимости явного поиска.
Методы
read :: a -> Указатель Word8 -> Word64 -> Int -> IO Int Источник
Читает до указанного количества байтов, начиная с указанного смещения, возвращая количество фактически прочитанных байтов. Эта функция должна блокироваться только в том случае, если нет доступных данных. Если доступных данных недостаточно, функция должна просто вернуть доступные данные. Значение 0 указывает на достижение конца потока данных (например, конца файла).
readNonBlocking :: a -> Указатель Word8 -> Word64 -> Int -> IO (Может быть Int) Источник
Читает до указанного количества байтов, начиная с указанного смещения, возвращая количество фактически прочитанных байтов или Nothing, если достигнут конец потока.
write :: a -> Указатель Word8 -> Word64 -> Int -> IO () Источник
Записывает указанное количество байтов, начиная с заданного смещения.
writeNonBlocking :: a -> Указатель Word8 -> Word64 -> Int -> IO Int Источник
Записывает до указанного количества байтов без блокировки, начиная с заданного смещения. Возвращает фактическое количество записанных байтов.
Примеры реализации
| RawIO FD Источник | С версии: base-4.1.0.0 |
Определено в GHC.Internal.IO.FD Методыread :: FD -> Указатель Word8 -> Word64 -> Int -> IO Int Источник readNonBlocking :: FD -> Указатель Word8 -> Word64 -> Int -> IO (Может быть Int) Источник write :: FD -> Указатель Word8 -> Word64 -> Int -> IO () Источник writeNonBlocking :: FD -> Указатель Word8 -> Word64 -> Int -> IO Int Источник | |
class IODevice a where Источник
Операции ввода-вывода, необходимые для реализации Handle.
Методы
ready :: a -> Bool -> Int -> IO Bool Source
возвращает значение True, если устройство содержит данные для чтения (если write равно False) или свободное место для записи новых данных (если write равно True). msecs указывает, сколько времени ждать в миллисекундах.
закрывает устройство. Дальнейшие операции с устройством должны вызвать исключения.
isTerminal :: a -> IO Bool Source
возвращает True, если устройство является терминалом или консолью.
isSeekable :: a -> IO Bool Source
возвращает True, если устройство поддерживает операции seek.
seek :: a -> SeekMode -> Integer -> IO Integer Source
перемещает указатель на указанную позицию в данных.
tell :: a -> IO Integer Source
возвращает текущую позицию в данных.
getSize :: a -> IO Integer Source
возвращает размер данных.
setSize :: a -> Integer -> IO () Source
изменяет размер данных.
setEcho :: a -> Bool -> IO () Source
для устройств-терминалов, изменяет, будут ли символы эхо-отражаться на устройстве.
getEcho :: a -> IO Bool Source
возвращает текущий статус эхо-отражения.
setRaw :: a -> Bool -> IO () Source
некоторые устройства (например, терминалы) поддерживают «сырой» режим, в котором введенные символы сразу доступны программе. Если поддерживается, эта операция включает сырой режим.
devType :: a -> IO IODeviceType Source
возвращает тип IODeviceType, соответствующий данному устройству.
дублирует устройство, если это возможно. Ожидается, что новое устройство будет совместно использовать указатель файла с исходным устройством (как в Unix dup).
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 Исходный код ... | |
data ТипУстройстваIO Исходный код
Тип устройства, которое может быть использовано для поддержки Handle (см. также mkFileHandle). Стандартные библиотеки предоставляют создание Handle с помощью операций с файлами Posix с дескрипторами файлов (см. mkHandleFromFD) с FD в качестве базового IODevice экземпляра.
Пользователи могут предоставить пользовательские экземпляры IODevice, которые, как ожидается, будут соответствовать следующим правилам:
Конструкторы
| Папка | Стандартные библиотеки не имеют прямой поддержки этого типа устройств, но предполагается, что пользовательская реализация предоставит список имён файлов в папке в любом порядке, разделённые символами |
| Поток | Двусторонний канал связи (приводит к созданию двустороннего |
| ОбычныйФайл | Файл, который можно читать или писать, а также может быть позиционируемым. |
| УстройствоБлоков | «Сырое» (дисковое) устройство, которое поддерживает операции чтения и записи блоков в двоичном формате и может быть позиционируемым только до определённой гранулярности (выровненной по блокам). |
Примеры
| Eq ТипУстройстваIO Исходный код | С тех пор как: base-4.2.0.0 |
Определено в GHC.Internal.IO.Device Методы(==) :: ТипУстройстваIO -> ТипУстройстваIO -> Bool Исходный код (/=) :: ТипУстройстваIO -> ТипУстройстваIO -> Bool Исходный код | |
data РежимПозиционирования Исходный код
Режим, определяющий эффект hSeek hdl mode i.
Конструкторы
| АбсолютноеПозиционирование | позиция |
| ОтносительноеПозиционирование | позиция |
| ПозиционированиеОтКонца | позиция |
Примеры
| Eq SeekMode Source | С момента: base-4.2.0.0 |
| Ord SeekMode Source | С момента: base-4.2.0.0 |
Определено в GHC.Internal.IO.Device | |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/GHC-IO-Device.html