| array-0.2.0.0: Mutable and immutable arrays | Source code | Contents | Index

Data.Array.Storable

Portability | non-portable (uses Data.Array.MArray)
Stability | experimental
Maintainer | libraries@haskell.org

Contents

Arrays of `Storable` things.
Overloaded mutable array interface
Accessing the pointer to the array contents

Description
A storable array is an IO-mutable array which stores its contents in a contiguous memory block living in the C heap. Elements are stored according to the class `Storable`. You can obtain the pointer to the array contents to manipulate elements from languages like C. It is similar to Data.Array.IO.IOUArray but slower. Its advantage is that it's compatible with C.
Synopsis

data StorableArray i e
module Data.Array.MArray
withStorableArray :: StorableArray i e -> (Ptr e -> IO a) -> IO a
touchStorableArray :: StorableArray i e -> IO ()
unsafeForeignPtrToStorableArray :: Ix i => ForeignPtr e -> (i, i) -> IO (StorableArray i e)

Arrays of `Storable` things.

data StorableArray i e | Source

The array type
Instances

Storable e => MArray StorableArray e IO

Overloaded mutable array interface
Module Data.Array.MArray provides the interface of storable arrays. They are instances of class `MArray` (with the `IO` monad).
module Data.Array.MArray
Accessing the pointer to the array contents

withStorableArray :: StorableArray i e -> (Ptr e -> IO a) -> IO a | Source

The pointer to the array contents is obtained by `withStorableArray`. The idea is similar to `ForeignPtr` (used internally here). The pointer should be used only during execution of the `IO` action retured by the function passed as argument to `withStorableArray`.

touchStorableArray :: StorableArray i e -> IO () | Source

If you want to use it afterwards, ensure that you `touchStorableArray` after the last use of the pointer, so the array is not freed too early.

unsafeForeignPtrToStorableArray :: Ix i => ForeignPtr e -> (i, i) -> IO (StorableArray i e) | Source

Construct a `StorableArray` from an arbitrary `ForeignPtr`. It is the caller's responsibility to ensure that the `ForeignPtr` points to an area of memory sufficient for the specified bounds.
Produced by Haddock version 2.4.2