Foreign.Marshal.Utils
| Авторские права | (c) Группа разработчиков FFI 2001 |
|---|---|
| Лицензия | BSD (см. файл libraries/base/LICENSE) |
| Поддержка | ffi@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимая |
| Safe 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, когда она больше не требуется.
Маршаллинг значений типа 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.
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