# LANGUAGE Trustworthy #
-----------------------------------------------------------------------------
-- |
-- Module      :  Data.Array.Storable.Safe
  Copyright    :   ( c ) The University of Glasgow 2001
-- License     :  BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer  :  
-- Stability   :  experimental
-- Portability :  non-portable (uses Data.Array.MArray)
--
-- 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.
--
  Safe API only of " Data . Array . Storable " .
--
-- /Since: 0.4.0.0/
-----------------------------------------------------------------------------

module Data.Array.Storable.Safe (
    -- * Arrays of 'Storable' things.
  data StorableArray index element
   + index type must be in class Ix
   + element type must be in class 

    -- * 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.Safe,

    -- * Accessing the pointer to the array contents
    withStorableArray,  -- :: StorableArray i e -> (Ptr e -> IO a) -> IO a

    touchStorableArray, -- :: StorableArray i e -> IO ()
  ) where

import Data.Array.MArray.Safe
import Data.Array.Storable.Internals


---------------------------------------------------------------------------
 |
 Module      :  Data.Array.Storable.Safe
 License     :  BSD-style (see the file libraries/base/LICENSE)

 Maintainer  :  
 Stability   :  experimental
 Portability :  non-portable (uses Data.Array.MArray)

 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.


 /Since: 0.4.0.0/
---------------------------------------------------------------------------
 * Arrays of 'Storable' things.
 * Overloaded mutable array interface
 | Module "Data.Array.MArray" provides the interface of storable arrays.
 They are instances of class 'MArray' (with the 'IO' monad).
 * Accessing the pointer to the array contents
 :: StorableArray i e -> (Ptr e -> IO a) -> IO a
 :: StorableArray i e -> IO ()
# LANGUAGE Trustworthy #
  Copyright    :   ( c ) The University of Glasgow 2001
  Safe API only of " Data . Array . Storable " .

module Data.Array.Storable.Safe (
  data StorableArray index element
   + index type must be in class Ix
   + element type must be in class 

    module Data.Array.MArray.Safe,


  ) where

import Data.Array.MArray.Safe
import Data.Array.Storable.Internals

