GHC.IO.Buffer
| Copyright | (c) The University of Glasgow 2008 |
|---|---|
| License | see libraries/base/LICENSE |
| Maintainer | cvs-ghc@haskell.org |
| Stability | internal |
| Portability | non-portable (GHC Extensions) |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Содержание
Описание
Буферы, используемые в системе ввода-вывода
Буферы любого элемента
Мультимассив байтов, который может быть передан внешним функциям.
Буфер представлен записью, где запись содержит необработанный буфер и начальные/конечные точки заполненной части. Само содержимое буфера изменяемо, но остальная часть записи неизменяема. Это немного странное сочетание, но оно оказывается довольно практичным: сделав все метаданные буфера неизменяемыми, мы можем выполнять операции с метаданными буфера за пределами моноида IO.
«Активные» элементы буфера находятся между смещениями bufL и bufR. В пустом буфере bufL равно bufR, но они могут быть не нулевыми: например, буфер может соответствовать отображаемому в память файлу, и в этом случае bufL будет указывать на следующее место для записи, которое не обязательно является началом файла.
Конструкторы
| Buffer | |
data BufferState Source
Конструкторы
| ReadBuffer | |
| WriteBuffer |
Экземпляры
type CharBuffer = Buffer Char Source
type CharBufElem = Char Source
Создание
newByteBuffer :: Int -> BufferState -> IO (Buffer Word8) Source
newCharBuffer :: Int -> BufferState -> IO CharBuffer Source
newBuffer :: Int -> Int -> BufferState -> IO (Buffer e) Source
emptyBuffer :: RawBuffer e -> Int -> BufferState -> Buffer e Source
Вставка/удаление
bufferRemove :: Int -> Buffer e -> Buffer e Source
bufferAdd :: Int -> Buffer e -> Buffer e Source
slideContents :: Buffer Word8 -> IO (Buffer Word8) Source
сдвигает содержимое буфера в начало
bufferAdjustL :: Int -> Buffer e -> Buffer e Source
Проверка
isEmptyBuffer :: Buffer e -> Bool Source
isFullBuffer :: Buffer e -> Bool Source
isFullCharBuffer :: Buffer e -> Bool Source
isWriteBuffer :: Buffer e -> Bool Source
bufferElems :: Buffer e -> Int Source
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
writeWord8Buf :: RawBuffer Word8 -> Int -> Word8 -> IO () Источник
type RawCharBuffer = RawBuffer CharBufElem Источник
peekCharBuf :: RawCharBuffer -> Int -> IO Char Источник
readCharBuf :: RawCharBuffer -> Int -> IO (Char, Int) Источник
writeCharBuf :: RawCharBuffer -> Int -> Char -> IO Int Источник
readCharBufPtr :: Ptr CharBufElem -> Int -> IO (Char, Int) Источник
writeCharBufPtr :: Ptr CharBufElem -> Int -> Char -> IO Int Источник
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/GHC-IO-Buffer.html