vector-0.6.0.1: Efficient ArraysSource codeContentsIndex
Data.Vector.Primitive.Mutable
Portabilitynon-portable
Stabilityexperimental
MaintainerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Contents
Mutable vectors of primitive types
Operations on mutable vectors
Unsafe operations
Description
Mutable primitive vectors.
Synopsis
data MVector s a = MVector !Int !Int !(MutableByteArray s)
type IOVector = MVector RealWorld
type STVector s = MVector s
Prim (sizeOf#, alignment#, indexByteArray#, readByteArray#, writeByteArray#, indexOffAddr#, readOffAddr#, writeOffAddr#)
length :: Prim a => MVector s a -> Int
overlaps :: Prim a => MVector s a -> MVector s a -> Bool
slice :: Prim a => Int -> Int -> MVector s a -> MVector s a
new :: (PrimMonad m, Prim a) => Int -> m (MVector (PrimState m) a)
newWith :: (PrimMonad m, Prim a) => Int -> a -> m (MVector (PrimState m) a)
read :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m a
write :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> a -> m ()
swap :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> Int -> m ()
clear :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> m ()
set :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> a -> m ()
copy :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
grow :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
unsafeSlice :: Prim a => Int -> Int -> MVector s a -> MVector s a
unsafeNew :: (PrimMonad m, Prim a) => Int -> m (MVector (PrimState m) a)
unsafeNewWith :: (PrimMonad m, Prim a) => Int -> a -> m (MVector (PrimState m) a)
unsafeRead :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m a
unsafeWrite :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> a -> m ()
unsafeSwap :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> Int -> m ()
unsafeCopy :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
unsafeGrow :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
Mutable vectors of primitive types
data MVector s a Source
Mutable vectors of primitive types.
Constructors
MVector !Int !Int !(MutableByteArray s)
show/hide Instances
type IOVector = MVector RealWorldSource
type STVector s = MVector sSource
Prim (sizeOf#, alignment#, indexByteArray#, readByteArray#, writeByteArray#, indexOffAddr#, readOffAddr#, writeOffAddr#)
Operations on mutable vectors
length :: Prim a => MVector s a -> IntSource
Length of the mutable vector.
overlaps :: Prim a => MVector s a -> MVector s a -> BoolSource
slice :: Prim a => Int -> Int -> MVector s a -> MVector s aSource
Yield a part of the mutable vector without copying it.
new :: (PrimMonad m, Prim a) => Int -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length.
newWith :: (PrimMonad m, Prim a) => Int -> a -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length and fill it with an initial value.
read :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m aSource
Yield the element at the given position.
write :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position.
swap :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> Int -> m ()Source
Swap the elements at the given positions.
clear :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> m ()Source
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 :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> a -> m ()Source
Set all elements of the vector to the given value.
copy :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()Source
Copy a vector. The two vectors must have the same length and may not overlap.
grow :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)Source
Grow a vector by the given number of elements. The number must be positive.
Unsafe operations
unsafeSliceSource
:: Prim a
=> Intstarting index
-> Intlength of the slice
-> MVector s a
-> MVector s a
Yield a part of the mutable vector without copying it. No bounds checks are performed.
unsafeNew :: (PrimMonad m, Prim a) => Int -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length. The length is not checked.
unsafeNewWith :: (PrimMonad m, Prim a) => Int -> a -> m (MVector (PrimState m) a)Source
Create a mutable vector of the given length and fill it with an initial value. The length is not checked.
unsafeRead :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m aSource
Yield the element at the given position. No bounds checks are performed.
unsafeWrite :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> a -> m ()Source
Replace the element at the given position. No bounds checks are performed.
unsafeSwap :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> Int -> m ()Source
Swap the elements at the given positions. No bounds checks are performed.
unsafeCopySource
:: (PrimMonad m, Prim a)
=> MVector (PrimState m) atarget
-> MVector (PrimState m) asource
-> m ()
Copy a vector. The two vectors must have the same length and may not overlap. This is not checked.
unsafeGrow :: (PrimMonad m, Prim a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)Source
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