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