Spec-Zone.ru › Haskell 8

GHC.IO.Buffer

Авторские права (c) Университет Глазго 2008
Лицензия см. libraries/base/LICENSE
Поддерживающий cvs-ghc@haskell.org
Стабильность внутренняя
Переносимость непереносимая (расширения GHC)
Безопасный Haskell Надёжный
Язык Haskell2010

Содержание

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

Описание

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

Буферы произвольных элементов

data Buffer e Источник

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

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

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

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

Buffer

Поля

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

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

END_OF_DOCUMENT_MARKER

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

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

Spec-Zone.ru

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