GHC.IO.Buffer
| Авторские права | (c) Университет Глазго 2008 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Поддерживающий | cvs-ghc@haskell.org |
| Стабильность | внутренняя |
| Переносимость | непереносимая (расширения GHC) |
| Безопасный Haskell | Надёжный |
| Язык | Haskell2010 |
Описание
Буферы, используемые в системе ввода-вывода
Буферы произвольных элементов
Изменяемый массив байтов, который может передаваться внешним функциям.
Буфер представлен записями, где записи содержат необработанный буфер и начальные/конечные точки заполненной части. Содержимое буфера само по себе изменяемо, но остальная часть записи неизменна. Это немного необычное сочетание, но на практике оказывается довольно практичным: сделав всю метаданные буфера неизменяемыми, мы можем выполнять операции с метаданными буфера вне монады ввода-вывода.
«Активные» элементы буфера находятся между смещениями bufL и bufR. В пустом буфере bufL равно bufR, но они могут не быть равны нулю: например, буфер может соответствовать отображаемому в памяти файлу, в этом случае bufL будет указывать на следующее место для записи, которое необязательно находится в начале файла.
Конструкторы
| Buffer | |
data BufferState Источник
Конструкторы
| ReadBuffer | |
| WriteBuffer |
Примеры
| Eq BufferState | С момента: base-4.2.0.0 |
Определено в GHC.IO.Buffer Методы(==) :: BufferState -> BufferState -> Bool Источник (/=) :: BufferState -> BufferState -> Bool Источник | |
type CharBuffer = Buffer Char Источник
type CharBufElem = Char Источник
Создание
newByteBuffer :: Int -> BufferState -> IO (Buffer Word8) Источник
newCharBuffer :: Int -> BufferState -> IO CharBuffer Источник
newBuffer :: Int -> Int -> BufferState -> IO (Buffer e) Источник
emptyBuffer :: RawBuffer e -> Int -> BufferState -> Buffer e Источник
Вставка/удаление
bufferRemove :: Int -> Buffer e -> Buffer e Источник
bufferAdd :: Int -> Buffer e -> Buffer e Источник
slideContents :: Buffer Word8 -> IO (Buffer Word8) Источник
Сдвигает содержимое буфера в начало
bufferAdjustL :: Int -> Buffer e -> Buffer e Источник
Просмотр
isEmptyBuffer :: Buffer e -> Bool Источник
isFullBuffer :: Buffer e -> Bool Источник
isFullCharBuffer :: Buffer e -> Bool Источник
isWriteBuffer :: Buffer e -> Bool Источник
bufferElems :: Buffer e -> Int Источник
bufferAvailable :: Buffer e -> Int Source
summaryBuffer :: Buffer a -> String Source
Работа с буфером как с Ptr
withBuffer :: Buffer e -> (Ptr e -> IO a) -> IO a Source
withRawBuffer :: RawBuffer e -> (Ptr e -> IO a) -> IO a Source
Ассерты
checkBuffer :: Buffer a -> IO () Source
Необработанные буферы
type RawBuffer e = ForeignPtr e Source
readWord8Buf :: RawBuffer Word8 -> Int -> IO Word8 Source
writeWord8Buf :: RawBuffer Word8 -> Int -> Word8 -> IO () Source
type RawCharBuffer = RawBuffer CharBufElem Source
peekCharBuf :: RawCharBuffer -> Int -> IO Char Source
readCharBuf :: RawCharBuffer -> Int -> IO (Char, Int) Source
writeCharBuf :: RawCharBuffer -> Int -> Char -> IO Int Source
readCharBufPtr :: Ptr CharBufElem -> Int -> IO (Char, Int) Source
writeCharBufPtr :: Ptr CharBufElem -> Int -> Char -> IO Int Source
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/GHC-IO-Buffer.html