Spec-Zone.ru › Haskell 7

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

Содержание

  • Буферы любого элемента
    • Создание
    • Вставка/удаление
    • Проверка
    • Работа с необработанным буфером как с Ptr
    • Утверждения
  • Необработанные буферы

Описание

Буферы, используемые в системе ввода-вывода

Буферы любого элемента

data Buffer e Source

Мультимассив байтов, который может быть передан внешним функциям.

Буфер представлен записью, где запись содержит необработанный буфер и начальные/конечные точки заполненной части. Само содержимое буфера изменяемо, но остальная часть записи неизменяема. Это немного странное сочетание, но оно оказывается довольно практичным: сделав все метаданные буфера неизменяемыми, мы можем выполнять операции с метаданными буфера за пределами моноида IO.

«Активные» элементы буфера находятся между смещениями bufL и bufR. В пустом буфере bufL равно bufR, но они могут быть не нулевыми: например, буфер может соответствовать отображаемому в память файлу, и в этом случае bufL будет указывать на следующее место для записи, которое не обязательно является началом файла.

Конструкторы

Buffer

Поля

bufRaw :: !(RawBuffer e)
bufState :: BufferState
bufSize :: !Int
bufL :: !Int
bufR :: !Int

data BufferState Source

Конструкторы

ReadBuffer
WriteBuffer

Экземпляры

Eq BufferState

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

readWord8Buf :: RawBuffer Word8 -> Int -> IO Word8 Source

END_OF_DOCUMENT_MARKER

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 Источник

charSize :: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API