| array-0.1.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 `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 0.8