|
Data.Vector.Unboxed.Mutable | Portability | non-portable | Stability | experimental | Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |
|
|
|
|
|
Description |
Mutable adaptive unboxed vectors
|
|
Synopsis |
|
data family MVector s a | | type IOVector = MVector RealWorld | | type STVector s = MVector s | | class (Vector Vector a, MVector MVector a) => Unbox a | | length :: Unbox a => MVector s a -> Int | | overlaps :: Unbox a => MVector s a -> MVector s a -> Bool | | slice :: Unbox a => Int -> Int -> MVector s a -> MVector s a | | new :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a) | | newWith :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a) | | read :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a | | write :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m () | | swap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m () | | clear :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> m () | | set :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> a -> m () | | copy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m () | | grow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a) | | zip :: (Unbox a, Unbox b) => MVector s a -> MVector s b -> MVector s (a, b) | | zip3 :: (Unbox a, Unbox b, Unbox c) => MVector s a -> MVector s b -> MVector s c -> MVector s (a, b, c) | | zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s (a, b, c, d) | | zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s (a, b, c, d, e) | | zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s f -> MVector s (a, b, c, d, e, f) | | unzip :: (Unbox a, Unbox b) => MVector s (a, b) -> (MVector s a, MVector s b) | | unzip3 :: (Unbox a, Unbox b, Unbox c) => MVector s (a, b, c) -> (MVector s a, MVector s b, MVector s c) | | unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s (a, b, c, d) -> (MVector s a, MVector s b, MVector s c, MVector s d) | | unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s (a, b, c, d, e) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e) | | unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s (a, b, c, d, e, f) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e, MVector s f) | | unsafeSlice :: Unbox a => Int -> Int -> MVector s a -> MVector s a | | unsafeNew :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a) | | unsafeNewWith :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a) | | unsafeRead :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a | | unsafeWrite :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m () | | unsafeSwap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m () | | unsafeCopy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m () | | unsafeGrow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a) |
|
|
|
Mutable vectors of primitive types
|
|
data family MVector s a | Source |
|
|
|
|
|
|
|
| Instances | Unbox Bool | Unbox Char | Unbox Double | Unbox Float | Unbox Int | Unbox Int8 | Unbox Int16 | Unbox Int32 | Unbox Int64 | Unbox Word | Unbox Word8 | Unbox Word16 | Unbox Word32 | Unbox Word64 | Unbox () | (RealFloat a, Unbox a) => Unbox (Complex a) | (Unbox a, Unbox b) => Unbox ((,) a b) | (Unbox a, Unbox b, Unbox c) => Unbox ((,,) a b c) | (Unbox a, Unbox b, Unbox c, Unbox d) => Unbox ((,,,) a b c d) | (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Unbox ((,,,,) a b c d e) | (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Unbox ((,,,,,) a b c d e f) |
|
|
|
Operations on mutable vectors
|
|
|
Length of the mutable vector.
|
|
|
|
|
Yield a part of the mutable vector without copying it.
|
|
|
Create a mutable vector of the given length.
|
|
|
Create a mutable vector of the given length and fill it with an
initial value.
|
|
|
Yield the element at the given position.
|
|
|
Replace the element at the given position.
|
|
|
Swap the elements at the given positions.
|
|
|
Reset all elements of the vector to some undefined value, clearing all
references to external objects. This is usually a noop for unboxed vectors.
|
|
|
Set all elements of the vector to the given value.
|
|
|
Copy a vector. The two vectors must have the same length and may not
overlap.
|
|
|
Grow a vector by the given number of elements. The number must be
positive.
|
|
|
O(1) Zip 2 vectors
|
|
|
O(1) Zip 3 vectors
|
|
|
O(1) Zip 4 vectors
|
|
|
O(1) Zip 5 vectors
|
|
zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s f -> MVector s (a, b, c, d, e, f) | Source |
|
O(1) Zip 6 vectors
|
|
|
O(1) Unzip 2 vectors
|
|
|
O(1) Unzip 3 vectors
|
|
|
O(1) Unzip 4 vectors
|
|
unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s (a, b, c, d, e) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e) | Source |
|
O(1) Unzip 5 vectors
|
|
unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s (a, b, c, d, e, f) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e, MVector s f) | Source |
|
O(1) Unzip 6 vectors
|
|
Unsafe operations
|
|
|
:: Unbox a | | => Int | starting index
| -> Int | length of the slice
| -> MVector s a | | -> MVector s a | | Yield a part of the mutable vector without copying it. No bounds checks
are performed.
|
|
|
|
Create a mutable vector of the given length. The length is not checked.
|
|
|
Create a mutable vector of the given length and fill it with an
initial value. The length is not checked.
|
|
|
Yield the element at the given position. No bounds checks are performed.
|
|
|
Replace the element at the given position. No bounds checks are performed.
|
|
|
Swap the elements at the given positions. No bounds checks are performed.
|
|
|
|
|
|
Grow a vector by the given number of elements. The number must be
positive but this is not checked.
|
|
Produced by Haddock version 2.4.2 |