Foreign.Marshal.Utils
| Авторские права | (c) Группа разработчиков FFI 2001 |
|---|---|
| Лицензия | Лицензия в стиле BSD (см. файл libraries/base/LICENSE) |
| Поддержка | ffi@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимая |
| Безопасный Haskell | Надёжный |
| Язык | Haskell2010 |
Содержание
Описание
Утилиты для примитивного маппинга
Общие утилиты маппинга
Объединённое выделение памяти и маппинг
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
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