module Data.Vector.Vinyl.Default.Mutable (
MVector(..),
length, null,
slice, init, tail, take, drop, splitAt,
unsafeSlice, unsafeInit, unsafeTail, unsafeTake, unsafeDrop,
overlaps,
new, unsafeNew, replicate, replicateM, clone,
grow, unsafeGrow,
clear,
read, write, swap,
unsafeRead, unsafeWrite, unsafeSwap,
set, copy, move, unsafeCopy, unsafeMove
) where
import Data.Vector.Vinyl.Default.Internal
import qualified Data.Vector.Generic.Mutable as G
import Data.Vector.Fusion.Util ( delayed_min )
import Control.Monad.Primitive
import Data.Vinyl.Core (Rec)
import Data.Vinyl.Functor (Identity)
import Prelude hiding ( length, null, replicate, reverse, map, read,
take, drop, splitAt, init, tail,
zip, zip3, unzip, unzip3 )
length :: MVector s (Rec Identity rs) -> Int
length (MV i _) = i
null :: MVector s (Rec Identity rs) -> Bool
null (MV i _) = i == 0
slice :: G.MVector MVector (Rec Identity rs) => Int -> Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
slice = G.slice
take :: G.MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
take = G.take
drop :: G.MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
drop = G.drop
splitAt :: G.MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> (MVector s (Rec Identity rs), MVector s (Rec Identity rs))
splitAt = G.splitAt
init :: G.MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
init = G.init
tail :: G.MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
tail = G.tail
unsafeSlice :: G.MVector MVector (Rec Identity rs)
=> Int
-> Int
-> MVector s (Rec Identity rs)
-> MVector s (Rec Identity rs)
unsafeSlice = G.unsafeSlice
unsafeTake :: G.MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
unsafeTake = G.unsafeTake
unsafeDrop :: G.MVector MVector (Rec Identity rs) => Int -> MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
unsafeDrop = G.unsafeDrop
unsafeInit :: G.MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
unsafeInit = G.unsafeInit
unsafeTail :: G.MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs)
unsafeTail = G.unsafeTail
overlaps :: G.MVector MVector (Rec Identity rs) => MVector s (Rec Identity rs) -> MVector s (Rec Identity rs) -> Bool
overlaps = G.overlaps
new :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => Int -> m (MVector (PrimState m) (Rec Identity rs))
new = G.new
unsafeNew :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => Int -> m (MVector (PrimState m) (Rec Identity rs))
unsafeNew = G.unsafeNew
replicate :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => Int -> (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs))
replicate = G.replicate
replicateM :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => Int -> m (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs))
replicateM = G.replicateM
clone :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs) -> m (MVector (PrimState m) (Rec Identity rs))
clone = G.clone
grow :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs) -> Int -> m (MVector (PrimState m) (Rec Identity rs))
grow = G.grow
unsafeGrow :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs) -> Int -> m (MVector (PrimState m) (Rec Identity rs))
unsafeGrow = G.unsafeGrow
clear :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> m ()
clear = G.clear
read :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (Rec Identity rs)
read = G.read
write :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> (Rec Identity rs) -> m ()
write = G.write
swap :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Int -> m ()
swap = G.swap
unsafeRead :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> m (Rec Identity rs)
unsafeRead = G.unsafeRead
unsafeWrite
:: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> (Rec Identity rs) -> m ()
unsafeWrite = G.unsafeWrite
unsafeSwap
:: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> Int -> Int -> m ()
unsafeSwap = G.unsafeSwap
set :: (PrimMonad m, G.MVector MVector (Rec Identity rs)) => MVector (PrimState m) (Rec Identity rs) -> (Rec Identity rs) -> m ()
set = G.set
copy :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m ()
copy = G.copy
unsafeCopy :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs)
-> MVector (PrimState m) (Rec Identity rs)
-> m ()
unsafeCopy = G.unsafeCopy
move :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs) -> MVector (PrimState m) (Rec Identity rs) -> m ()
move = G.move
unsafeMove :: (PrimMonad m, G.MVector MVector (Rec Identity rs))
=> MVector (PrimState m) (Rec Identity rs)
-> MVector (PrimState m) (Rec Identity rs)
-> m ()
unsafeMove = G.unsafeMove