Spec-Zone.ru › Haskell 7

Data.Binary.Построитель

Авторские права Леннарт Колмодин, Росс Патерсон
Лицензия BSD3-style (см. LICENSE)
Поддержка Леннарт Колмодин <kolmodin@gmail.com>
Устойчивость экспериментальная
Портируемость портируется в Hugs и GHC
Безопасный Haskell Безопасный
Язык Haskell98

Содержание

  • Тип Builder
  • Создание Builder
  • Очистка состояния буфера
  • Производные Builder
    • Запись в формате big-endian
    • Запись в формате little-endian
    • Запись в формате host-endian, без выравнивания
    • Unicode

Описание

Эффективное создание ленивых битовых строк.

Тип Builder

data Builder Исходный код

Тип Builder является эффективным способом построения ленивых ByteString. Существуют различные функции для создания Builder , но только одна для их проверки: для извлечения данных необходимо преобразовать их в ленивые ByteString с помощью toLazyByteString.

Внутренне, Builder создает ленивую Bytestring путем заполнения массивов байтов по частям. По мере заполнения каждого буфера он «выталкивается», чтобы стать новым фрагментом получившейся ленивой ByteString. Все это скрыто от пользователя Builder.

Примеры

Monoid Builder

toLazyByteString :: Builder -> ByteString Исходный код

O(n). Извлечь ленивую ByteString из Builder. Работа по построению выполняется тогда и только тогда, когда требуемая часть ленивой ByteString запрашивается.

Создание Builder

empty :: Builder Исходный код

O(1). Пустой Builder, удовлетворяющий

  • toLazyByteString empty = empty

singleton :: Word8 -> Builder Исходный код

O(1). Builder, принимающий один байт, удовлетворяющий

  • toLazyByteString (singleton b) = singleton b

append :: Builder -> Builder -> Builder Исходный код

O(1). Конкатенация двух Builder, ассоциативная операция с единицей empty, удовлетворяющая

  • toLazyByteString (append x y) = append (toLazyByteString x) (toLazyByteString y)

fromByteString :: ByteString -> Builder Исходный код

O(1). Builder, принимающий ByteString, удовлетворяющий

  • toLazyByteString (fromByteString bs) = fromChunks [bs]

fromLazyByteString :: ByteString -> Builder Исходный код

O(1). Builder, принимающий ленивую ByteString, удовлетворяющий

  • toLazyByteString (fromLazyByteString bs) = bs

Очистка состояния буфера

flush :: Builder Исходный код

O(1). Выталкивает ByteString , который был построен до сих пор, если таковой имеется, генерируя новый фрагмент в ленивой ByteString.

Производные билдеры

Запись в формате big-endian

putWord16be :: Word16 -> Builder Source

Записать Word16 в формате big endian

putWord32be :: Word32 -> Builder Source

Записать Word32 в формате big endian

putWord64be :: Word64 -> Builder Source

Записать Word64 в формате big endian

Запись в формате little-endian

putWord16le :: Word16 -> Builder Source

Записать Word16 в формате little endian

putWord32le :: Word32 -> Builder Source

Записать Word32 в формате little endian

putWord64le :: Word64 -> Builder Source

Записать Word64 в формате little endian

Запись в формате хост-эндиана, без выравнивания

putWordhost :: Word -> Builder Source

O(1). Бильдер, принимающий одно машинное слово. Слово записывается в порядке и формате хост-эндиана для текущей машины. На 64-битной машине слово — значение 8 байт, на 32-битной — 4 байта. Значения, записанные таким образом, не будут портативными для машин с другим порядком байтов или размером слова без преобразования.

putWord16host :: Word16 -> Builder Source

Записать Word16 в порядке и формате хост-эндиана. Будет записано 2 байта, без выравнивания.

putWord32host :: Word32 -> Builder Source

Записать Word32 в порядке и формате хост-эндиана. Будет записано 4 байта, без выравнивания.

putWord64host :: Word64 -> Builder Source

Записать Word64 в порядке хост-эндиана. На 32-битной машине мы запишем два Word32 в формате big endian. Будет записано 8 байт, без выравнивания.

Unicode

putCharUtf8 :: Char -> Builder Source

Записать символ в кодировке UTF-8.

© 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/binary-0.7.5.0/Data-Binary-Builder.html

Spec-Zone.ru

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