on master help sign in
Rename Foreign.Mut.unsafeWithArray as Foreign.Mut.asPtrUnsafe
commit27796a8aa2c3fe3e10d88bd6a5e1febe38860bb1 authorAdithya Kumar <adithya@composewell.com> dateSun 6 Feb 2022, 02:02 (5 years ago) parentcc44d97
1 file changed+16−22
src/Streamly/Internal/Data/Array/Foreign/Mut/Type.hs+16−22
src/Streamly/Internal/Data/Array/Foreign/Mut/Type.hs+16−22
@@ -20,7 +20,6 @@ module Streamly.Internal.Data.Array.Foreign.Mut.Type
2020 , ArrayContents
2121 , arrayToFptrContents
2222 , fptrToArrayContents
23− , unsafeWithArray
2423 , nilArrayContents
2524 , touch
2625
@@ -332,13 +331,6 @@ fptrToArrayContents _ = error "Unsupported foreign ptr"
332331arrayToFptrContents (ArrayContents contents) = PlainPtr contents
333332#endif
334333
335−-- | Similar to unsafeWithForeignPtr.
336−unsafeWithArray :: MonadIO m => Array a -> (Ptr a -> m b) -> m b
337−unsafeWithArray Array{..} f = do
338− r <- f arrStart
339− liftIO $ touch arrContents
340− return r
341−
342334-------------------------------------------------------------------------------
343335-- Array Data Type
344336-------------------------------------------------------------------------------
@@ -530,7 +522,7 @@ withNewArrayUnsafe ::
530522 (MonadIO m, Storable a) => Int -> (Ptr a -> m ()) -> m (Array a)
531523withNewArrayUnsafe count f = do
532524 arr <- newArray count
533− unsafeWithArray arr
525+ asPtrUnsafe arr
534526 $ \p -> f p >> return arr
535527
536528-------------------------------------------------------------------------------
@@ -545,7 +537,7 @@ withNewArrayUnsafe count f = do
545537putIndexUnsafe :: forall m a. (MonadIO m, Storable a)
546538 => Int -> a -> Array a -> m ()
547539putIndexUnsafe i x arr@(Array{..}) =
548− unsafeWithArray arr $ \ptr -> do
540+ asPtrUnsafe arr $ \ptr -> do
549541 let elemPtr = PTR_INDEX(ptr,i,a)
550542 assert (i >= 0 && PTR_VALID(elemPtr,aEnd,a)) (return ())
551543 liftIO $ poke elemPtr x
@@ -574,7 +566,7 @@ putIndexPtr start end i x = do
574566{-# INLINE putIndex #-}
575567putIndex :: (MonadIO m, Storable a) => Int -> a -> Array a -> m ()
576568putIndex i x arr =
577− unsafeWithArray arr
569+ asPtrUnsafe arr
578570 $ \p -> putIndexPtr p (aEnd arr) i x
579571
580572-- | Write an input stream of (index, value) pairs to an array. Throws an
@@ -600,7 +592,7 @@ putIndices Array{..} = FL.mkFoldM step initial extract
600592modifyIndexUnsafe :: forall m a b. (MonadIO m, Storable a) =>
601593 Int -> (a -> (a, b)) -> Array a -> m b
602594modifyIndexUnsafe i f arr@(Array{..}) = do
603− liftIO $ unsafeWithArray arr $ \ptr -> do
595+ liftIO $ asPtrUnsafe arr $ \ptr -> do
604596 let elemPtr = PTR_INDEX(ptr,i,a)
605597 assert (i >= 0 && PTR_NEXT(elemPtr,a) <= aEnd) (return ())
606598 r <- peek elemPtr
@@ -627,7 +619,7 @@ modifyIndexPtr i f start end = liftIO $ do
627619modifyIndex :: forall m a b. (MonadIO m, Storable a) =>
628620 Int -> (a -> (a, b)) -> Array a -> m b
629621modifyIndex i f arr@(Array{..}) = do
630− liftIO $ unsafeWithArray arr $ \ptr -> do
622+ liftIO $ asPtrUnsafe arr $ \ptr -> do
631623 modifyIndexPtr i f ptr aEnd
632624
633625-- | Modify the array indices generated by the supplied stream.
@@ -654,7 +646,7 @@ modifyIndices f Array{..} = Fold step initial extract
654646modify :: forall m a. (MonadIO m, Storable a)
655647 => (a -> a) -> Array a -> m ()
656648modify f arr@Array{..} = liftIO $
657− unsafeWithArray arr go
649+ asPtrUnsafe arr go
658650
659651 where
660652
@@ -681,7 +673,7 @@ swapPtrs ptr1 ptr2 = do
681673unsafeSwapIndices :: forall m a. (MonadIO m, Storable a)
682674 => Int -> Int -> Array a -> m ()
683675unsafeSwapIndices i1 i2 arr = liftIO $ do
684− unsafeWithArray arr $ \ptr -> do
676+ asPtrUnsafe arr $ \ptr -> do
685677 let ptr1 = PTR_INDEX(ptr,i1,a)
686678 ptr2 = PTR_INDEX(ptr,i2,a)
687679 swapPtrs ptr1 (ptr2 :: Ptr a)
@@ -1048,7 +1040,7 @@ snoc = snocWith f
10481040{-# INLINE_NORMAL getIndexUnsafe #-}
10491041getIndexUnsafe :: forall m a. (MonadIO m, Storable a) => Int -> Array a -> m a
10501042getIndexUnsafe i arr@(Array {..}) =
1051− unsafeWithArray arr $ \ptr -> do
1043+ asPtrUnsafe arr $ \ptr -> do
10521044 let elemPtr = PTR_INDEX(ptr,i,a)
10531045 assert (i >= 0 && PTR_VALID(elemPtr,aEnd,a)) (return ())
10541046 liftIO $ peek elemPtr
@@ -1067,7 +1059,7 @@ getIndexPtr start end i = do
10671059{-# INLINE getIndex #-}
10681060getIndex :: (MonadIO m, Storable a) => Int -> Array a -> m a
10691061getIndex i arr =
1070− unsafeWithArray arr
1062+ asPtrUnsafe arr
10711063 $ \p -> getIndexPtr p (aEnd arr) i
10721064
10731065{-# INLINE getIndexPtrRev #-}
@@ -1087,7 +1079,7 @@ getIndexPtrRev start end i = do
10871079{-# INLINE getIndexRev #-}
10881080getIndexRev :: (MonadIO m, Storable a) => Int -> Array a -> m a
10891081getIndexRev i arr =
1090− unsafeWithArray arr
1082+ asPtrUnsafe arr
10911083 $ \p -> getIndexPtrRev p (aEnd arr) i
10921084
10931085data GetIndicesState contents start end st =
@@ -2241,15 +2233,17 @@ cast arr =
22412233 then Nothing
22422234 else Just $ castUnsafe arr
22432235
2244−-- | Use an @Array a@ as @Ptr b@.
2236+-- | Use an @Array a@ as @Ptr a@.
22452237--
22462238-- /Unsafe/
22472239--
22482240-- /Pre-release/
22492241--
2250−asPtrUnsafe :: Array a -> (Ptr b -> IO c) -> IO c
2251−asPtrUnsafe arr act = do
2252− unsafeWithArray arr $ \ptr -> act (castPtr ptr)
2242+asPtrUnsafe :: MonadIO m => Array a -> (Ptr a -> m b) -> m b
2243+asPtrUnsafe Array{..} f = do
2244+ r <- f arrStart
2245+ liftIO $ touch arrContents
2246+ return r
22532247
22542248-------------------------------------------------------------------------------
22552249-- Equality