Spec-Zone.ru › Haskell 7

Foreign.Marshal.Array

Copyright (c) The FFI task force 2001
License BSD-style (see the file libraries/base/LICENSE)
Maintainer ffi@haskell.org
Stability provisional
Portability portable
Safe Haskell Trustworthy
Language Haskell2010

Содержание

  • Маршаллинг массивов
    • Выделение памяти
    • Маршаллинг
    • Комбинированное выделение памяти и маршаллинг
    • Копирование
    • Определение длины
    • Индексация

Описание

Поддержка маршалинга: подпрограммы для выделения, хранения и извлечения списков Haskell, представленных как массивы на языке программирования.

Маршаллинг массивов

Выделение памяти

mallocArray :: Storable a => Int -> IO (Ptr a) Source

Выделить память для заданного количества элементов типа Storable (аналогично malloc, но для нескольких элементов).

mallocArray0 :: Storable a => Int -> IO (Ptr a) Source

Аналогично mallocArray, но добавляет дополнительную позицию для хранения специального терминального элемента.

allocaArray :: Storable a => Int -> (Ptr a -> IO b) -> IO b Source

Временно выделить память для заданного количества элементов (аналогично alloca, но для нескольких элементов).

allocaArray0 :: Storable a => Int -> (Ptr a -> IO b) -> IO b Source

Аналогично allocaArray, но добавляет дополнительную позицию для хранения специального терминального элемента.

reallocArray :: Storable a => Ptr a -> Int -> IO (Ptr a) Source

Изменить размер массива

reallocArray0 :: Storable a => Ptr a -> Int -> IO (Ptr a) Source

Изменить размер массива, включая дополнительную позицию для конечного маркера.

callocArray :: Storable a => Int -> IO (Ptr a) Source

Аналогично mallocArray, но выделенная память заполняется байтами со значением ноль.

callocArray0 :: Storable a => Int -> IO (Ptr a) Source

Аналогично callocArray0, но выделенная память заполняется байтами со значением ноль.

Маршаллинг

peekArray :: Storable a => Int -> Ptr a -> IO [a] Source

Преобразовать массив заданной длины в список Haskell. Реализация является хвосторекурсивной и, таким образом, использует постоянное пространство стека.

peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a] Source

Преобразовать массив, завершающийся заданным конечным маркером, в список Haskell

pokeArray :: Storable a => Ptr a -> [a] -> IO () Source

Записать элементы списка последовательно в память

pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO () Source

Записать элементы списка последовательно в память и завершить их заданным элементом-маркером

Комбинированное выделение памяти и маршаллинг

newArray :: Storable a => [a] -> IO (Ptr a) Source

Записать список элементов Storable в нововыделенную, последовательную последовательность значений Storable (аналогично new, но для нескольких элементов).

newArray0 :: Storable a => a -> [a] -> IO (Ptr a) Source

Записать список элементов Storable в нововыделенную, последовательную последовательность значений Storable, где конец фиксируется заданным конечным маркером

withArray :: Storable a => [a] -> (Ptr a -> IO b) -> IO b Source

Временно сохранить список значений Storable в памяти (аналогично with, но для нескольких элементов).

withArray0 :: Storable a => a -> [a] -> (Ptr a -> IO b) -> IO b Source

Аналогично withArray, но терминатор указывает, где заканчивается массив

withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b Source

Аналогично withArray, но действие получает количество значений в качестве дополнительного параметра

withArrayLen0 :: Storable a => a -> [a] -> (Int -> Ptr a -> IO b) -> IO b Source

Аналогично withArrayLen, но терминатор указывает, где заканчивается массив

Копирование

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

copyArray :: Storable a => Ptr a -> Ptr a -> Int -> IO () Source

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

moveArray :: Storable a => Ptr a -> Ptr a -> Int -> IO () Source

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

Определение длины

lengthArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO Int Source

Возвращает количество элементов в массиве, исключая терминатор

Индексирование

advancePtr :: Storable a => Ptr a -> Int -> Ptr a Source

Перемещает указатель в массиве на заданное количество элементов

© 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-Array.html

Spec-Zone.ru

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