Copyright | (c) 2009 2010 2011 Bryan O'Sullivan |
---|---|
License | BSD-style |
Maintainer | bos@serpentine.com |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Packed, unboxed, heap-resident arrays. Suitable for performance critical use, both in terms of large data quantities and high speed.
This module is intended to be imported qualified
, to avoid name
clashes with Prelude functions, e.g.
import qualified Data.Text.Array as A
The names in this module resemble those in the Array
family
of modules, but are shorter due to the assumption of qualified
naming.
- data Array = Array {
- aBA :: ByteArray#
- data MArray s = MArray {
- maBA :: MutableByteArray# s
- copyM :: MArray s -> Int -> MArray s -> Int -> Int -> ST s ()
- copyI :: MArray s -> Int -> Array -> Int -> Int -> ST s ()
- copyToPtr :: Ptr Word8 -> Int -> Array -> Int -> Int -> IO ()
- copyFromPtr :: MArray s -> Int -> Ptr Word8 -> Int -> Int -> ST s ()
- empty :: Array
- equal :: Array -> Int -> Array -> Int -> Int -> Bool
- cmp :: Array -> Int -> Array -> Int -> Int -> Ordering
- run :: (forall s. ST s (MArray s)) -> Array
- run2 :: (forall s. ST s (MArray s, a)) -> (Array, a)
- toList :: Array -> Int -> Int -> [Word8]
- unsafeFreeze :: MArray s -> ST s Array
- unsafeIndex :: Array -> Int -> Word8
- unsafeIndex32 :: Array -> Int -> Word32
- unsafeIndex64 :: Array -> Int -> Word64
- new :: forall s. Int -> ST s (MArray s)
- unsafeWrite :: MArray s -> Int -> Word8 -> ST s ()
- unsafeWrite32 :: MArray s -> Int -> Word32 -> ST s ()
- unsafeWrite64 :: MArray s -> Int -> Word64 -> ST s ()
Types
Immutable array type.
The Array
constructor is exposed since text-1.1.1.3
Array | |
|
Mutable array type, for use in the ST monad.
The MArray
constructor is exposed since text-1.1.1.3
MArray | |
|
Functions
:: MArray s | Destination |
-> Int | Destination offset |
-> MArray s | Source |
-> Int | Source offset |
-> Int | Count |
-> ST s () |
Copy some elements of a mutable array.
:: MArray s | Destination |
-> Int | Destination offset |
-> Array | Source |
-> Int | Source offset |
-> Int | First offset in destination not to copy (i.e. not length) |
-> ST s () |
Copy some elements of an immutable array.
:: Ptr Word8 | Destination |
-> Int | Destination offset |
-> Array | Source |
-> Int | Source offset |
-> Int | First offset in destination not to copy (i.e. not length) |
-> IO () |
Copy some elements of an immutable array to a pointer
Compare portions of two arrays for equality. No bounds checking is performed.
Compare portions of two arrays for equality. No bounds checking is performed.
run :: (forall s. ST s (MArray s)) -> Array Source #
Run an action in the ST monad and return an immutable array of its result.
run2 :: (forall s. ST s (MArray s, a)) -> (Array, a) Source #
Run an action in the ST monad and return an immutable array of its result paired with whatever else the action returns.
unsafeFreeze :: MArray s -> ST s Array Source #
Freeze a mutable array. Do not mutate the MArray
afterwards!
unsafeIndex :: Array -> Int -> Word8 Source #
Unchecked read of an immutable array. May return garbage or crash on an out-of-bounds access.
unsafeIndex32 :: Array -> Int -> Word32 Source #
Unchecked read of an immutable array. May return garbage or crash on an out-of-bounds access.
unsafeIndex64 :: Array -> Int -> Word64 Source #
Unchecked read of an immutable array. May return garbage or crash on an out-of-bounds access.
unsafeWrite :: MArray s -> Int -> Word8 -> ST s () Source #
Unchecked write of a mutable array. May return garbage or crash on an out-of-bounds access.