The module Foreign.Marshal.Array provides operations for marshalling Haskell lists into monolithic arrays and vice versa. Most functions come in two flavours: one for arrays terminated by a special termination element and one where an explicit length parameter is used to determine the extent of an array. The typical example for the former case are C’s NUL terminated strings. However, please note that C strings should usually be marshalled using the functions provided by Foreign.C.String as the Unicode encoding has to be taken into account. All functions specifically operating on arrays that are terminated by a special termination element have a name ending on 0—e.g., mallocArray allocates space for an array of the given size, whereas mallocArray0 allocates space for one more element to ensure that there is room for the terminator.
mallocArray :: Storable a => Int -> IO (Ptr a) |
mallocArray0 :: Storable a => Int -> IO (Ptr a) |
allocaArray :: Storable a => Int -> (Ptr a -> IO b) -> IO b |
allocaArray0 :: Storable a => Int -> (Ptr a -> IO b) -> IO b |
reallocArray :: Storable a => Ptr a -> Int -> IO (Ptr a) |
reallocArray0 :: Storable a => Ptr a -> Int -> IO (Ptr a) |
peekArray :: Storable a => Int -> Ptr a -> IO [a] |
peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a] |
pokeArray :: Storable a => Ptr a -> [a] -> IO () |
pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO () |
newArray :: Storable a => [a] -> IO (Ptr a) |
newArray0 :: Storable a => a -> [a] -> IO (Ptr a) |
withArray :: Storable a => [a] -> (Ptr a -> IO b) -> IO b |
withArray0 :: Storable a => a -> [a] -> (Ptr a -> IO b) -> IO b |
withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b |
withArrayLen0 :: Storable a => a |
-> [a] -> (Int -> Ptr a -> IO b) -> IO b |
(argument order: destination, source)
copyArray :: Storable a => Ptr a -> Ptr a -> Int -> IO () |
moveArray :: Storable a => Ptr a -> Ptr a -> Int -> IO () |
lengthArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO Int |
advancePtr :: Storable a => Ptr a -> Int -> Ptr a |