author Roman Leshchinskiy Mon, 24 May 2010 07:54:34 +0000 (07:54 +0000) committer Roman Leshchinskiy Mon, 24 May 2010 07:54:34 +0000 (07:54 +0000)
 Data/Vector.hs patch | blob | history Data/Vector/Generic.hs patch | blob | history Data/Vector/Primitive.hs patch | blob | history Data/Vector/Storable.hs patch | blob | history Data/Vector/Unboxed.hs patch | blob | history

index a97995a..26065ea 100644 (file)
@@ -140,7 +140,7 @@ module Data.Vector (
G.convert,

-- ** Mutable vectors
G.convert,

-- ** Mutable vectors
-  unsafeFreeze, unsafeThaw, thaw, copy, unsafeCopy
+  freeze, thaw, copy, unsafeFreeze, unsafeThaw, unsafeCopy
) where

import qualified Data.Vector.Generic as G
) where

import qualified Data.Vector.Generic as G
@@ -1318,6 +1318,11 @@ thaw :: PrimMonad m => Vector a -> m (MVector (PrimState m) a)
{-# INLINE thaw #-}
thaw = G.thaw

{-# INLINE thaw #-}
thaw = G.thaw

+-- | /O(n)/ Yield an immutable copy of the mutable vector.
+freeze :: PrimMonad m => MVector (PrimState m) a -> m (Vector a)
+{-# INLINE freeze #-}
+freeze = G.freeze
+
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy :: PrimMonad m => MVector (PrimState m) a -> Vector a -> m ()
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy :: PrimMonad m => MVector (PrimState m) a -> Vector a -> m ()
index 34a0029..26b3185 100644 (file)
@@ -130,7 +130,7 @@ module Data.Vector.Generic (
convert,

-- ** Mutable vectors
convert,

-- ** Mutable vectors
-  unsafeFreeze, unsafeThaw, thaw, copy, unsafeCopy,
+  freeze, thaw, copy, unsafeFreeze, unsafeThaw, unsafeCopy,

-- * Fusion support

-- * Fusion support

@@ -1606,6 +1606,11 @@ thaw v = do
unsafeCopy mv v
return mv

unsafeCopy mv v
return mv

+-- | /O(n)/ Yield an immutable copy of the mutable vector.
+freeze :: (PrimMonad m, Vector v a) => Mutable v (PrimState m) a -> m (v a)
+{-# INLINE freeze #-}
+freeze mv = unsafeFreeze =<< M.clone mv
+
{-
-- | /O(n)/ Yield a mutable vector containing copies of each vector in the
-- list.
{-
-- | /O(n)/ Yield a mutable vector containing copies of each vector in the
-- list.
index 25dd69b..164d075 100644 (file)
@@ -129,7 +129,7 @@ module Data.Vector.Primitive (
G.convert,

-- ** Mutable vectors
G.convert,

-- ** Mutable vectors
-  unsafeFreeze, unsafeThaw, thaw, copy, unsafeCopy
+  freeze, thaw, copy, unsafeFreeze, unsafeThaw, unsafeCopy
) where

import qualified Data.Vector.Generic           as G
) where

import qualified Data.Vector.Generic           as G
@@ -1231,6 +1231,11 @@ thaw :: (Prim a, PrimMonad m) => Vector a -> m (MVector (PrimState m) a)
{-# INLINE thaw #-}
thaw = G.thaw

{-# INLINE thaw #-}
thaw = G.thaw

+-- | /O(n)/ Yield an immutable copy of the mutable vector.
+freeze :: (Prim a, PrimMonad m) => MVector (PrimState m) a -> m (Vector a)
+{-# INLINE freeze #-}
+freeze = G.freeze
+
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy
index ef3dfa4..cf7aab4 100644 (file)
@@ -126,7 +126,7 @@ module Data.Vector.Storable (
G.convert,

-- ** Mutable vectors
G.convert,

-- ** Mutable vectors
-  unsafeFreeze, unsafeThaw, thaw, copy, unsafeCopy,
+  freeze, thaw, copy, unsafeFreeze, unsafeThaw, unsafeCopy,

-- * Raw pointers
unsafeFromForeignPtr, unsafeToForeignPtr, unsafeWith

-- * Raw pointers
unsafeFromForeignPtr, unsafeToForeignPtr, unsafeWith
@@ -1252,6 +1252,11 @@ thaw :: (Storable a, PrimMonad m) => Vector a -> m (MVector (PrimState m) a)
{-# INLINE thaw #-}
thaw = G.thaw

{-# INLINE thaw #-}
thaw = G.thaw

+-- | /O(n)/ Yield an immutable copy of the mutable vector.
+freeze :: (Storable a, PrimMonad m) => MVector (PrimState m) a -> m (Vector a)
+{-# INLINE freeze #-}
+freeze = G.freeze
+
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy
index 9cb8ae0..d44d0f0 100644 (file)
@@ -153,7 +153,7 @@ module Data.Vector.Unboxed (
G.convert,

-- ** Mutable vectors
G.convert,

-- ** Mutable vectors
-  unsafeFreeze, unsafeThaw, thaw, copy, unsafeCopy
+  freeze, thaw, copy, unsafeFreeze, unsafeThaw, unsafeCopy
) where

import Data.Vector.Unboxed.Base
) where

import Data.Vector.Unboxed.Base
@@ -1259,6 +1259,11 @@ thaw :: (Unbox a, PrimMonad m) => Vector a -> m (MVector (PrimState m) a)
{-# INLINE thaw #-}
thaw = G.thaw

{-# INLINE thaw #-}
thaw = G.thaw

+-- | /O(n)/ Yield an immutable copy of the mutable vector.
+freeze :: (Unbox a, PrimMonad m) => MVector (PrimState m) a -> m (Vector a)
+{-# INLINE freeze #-}
+freeze = G.freeze
+
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy
-- | /O(n)/ Copy an immutable vector into a mutable one. The two vectors must
-- have the same length. This is not checked.
unsafeCopy