Spec-Zone.ru › Haskell 7

Foreign.Marshal.Utils

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

Содержание

  • Общие утилиты маппинга
    • Объединённое выделение памяти и маппинг
    • Маппинг булевых значений (ненулевое значение соответствует 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, когда она больше не требуется.

Маппинг булевых значений (ненулевое значение соответствует True)

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

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

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

Преобразование булева значения в числовом представлении в значение 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 в комбинатор, возвращающий Maybe, если применён к Maybe

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

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

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

С версии: 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/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-Marshal-Utils.html

Spec-Zone.ru

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