Spec-Zone.ru › Haskell 8

Foreign.Marshal.Utils

Авторские права (c) Группа разработчиков FFI 2001
Лицензия BSD (см. файл libraries/base/LICENSE)
Поддержка ffi@haskell.org
Стабильность предварительная
Переносимость переносимая
Safe Haskell Надежная
Язык Haskell2010

Содержание

  • Общие утилиты маршалинга
    • Объединённое выделение и маршаллинг
    • Маршаллинг значений типа Boolean (ненулевое значение соответствует True)
    • Маршаллинг значений Maybe
    • Маршаллинг списков хранимых объектов
    • Интерфейс Haskell для memcpy и memmove
    • Заполнение области памяти требуемыми значениями

Описание

Утилиты для примитивного маршалинга

Общие утилиты маршалинга

Объединённое выделение и маршаллинг

with :: Storable a => a -> (Ptr a -> IO b) -> IO b Источник

with val f выполняет вычисление f, передавая в качестве аргумента указатель на временно выделенный блок памяти, в который val было промаршаллировано (сочетание alloca и poke).

Память освобождается, когда f завершается (нормально или с исключением), поэтому указатель, переданный f, не должен использоваться после этого.

new :: Storable a => a -> IO (Ptr a) Источник

Выделяет блок памяти и маршаллирует значение в него (сочетание malloc и poke). Размер выделенной области определяется методом sizeOf из экземпляра Storable для соответствующего типа.

Память может быть освобождена с помощью free или finalizerFree, когда она больше не требуется.

Маршаллинг значений типа Boolean (ненулевое значение соответствует True)

fromBool :: Num a => Bool -> a Источник

Преобразует Haskell значение Bool в его числовое представление.

toBool :: (Eq a, Num a) => a -> Bool Источник

Преобразует значение Boolean в числовом представлении в Haskell значение.

Маршаллинг значений Maybe

maybeNew :: (a -> IO (Ptr b)) -> Maybe a -> IO (Ptr b) Источник

Выделяет память и маршаллирует хранимое значение, заключенное в Maybe.

  • значение nullPtr используется для представления Nothing

maybeWith :: (a -> (Ptr b -> IO c) -> IO c) -> Maybe a -> (Ptr b -> IO c) -> IO c Источник

Преобразует комбинатор withXXX в такой, который маршаллирует значение, заключенное в Maybe, используя nullPtr для представления Nothing.

maybePeek :: (Ptr a -> IO b) -> Ptr a -> IO (Maybe b) Источник

Преобразует комбинатор peek в такой, который возвращает Nothing при применении к nullPtr.

Маршаллинг списков хранимых объектов

withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res Источник

Реплицирует комбинатор withXXX над списком объектов, получая список промаршаллированных объектов.

Интерфейс Haskell для memcpy и memmove

(порядок аргументов: место назначения, источник)

copyBytes :: Ptr a -> Ptr a -> Int -> IO () Источник

Копирует заданное число байтов из второй области (источник) в первую (место назначения); копируемые области не могут перекрываться.

moveBytes :: Ptr a -> Ptr a -> Int -> IO () Источник

Копирует заданное число байтов из второй области (источник) в первую (место назначения); копируемые области могут перекрываться.

Заполнение области памяти требуемыми значениями

fillBytes :: Ptr a -> Word8 -> Int -> IO () Источник

Заполняет заданное число байтов в области памяти значением байта.

С версии: base-4.8.0.0

© 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/Foreign-Marshal-Utils.html

Spec-Zone.ru

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