@@ -20,7 +20,7 @@ module Streamly.Internal.Data.Array.Foreign.Mut.Type
2020 , ArrayContents
2121 , arrayToFptrContents
2222 , fptrToArrayContents
23− , unsafeWithArrayContents
23+ , unsafeWithArray
2424 , nilArrayContents
2525 , touch
2626
@@ -333,12 +333,10 @@ arrayToFptrContents (ArrayContents contents) = PlainPtr contents
333333#endif
334334
335335-- | Similar to unsafeWithForeignPtr.
336−{-# INLINE unsafeWithArrayContents #-}
337−unsafeWithArrayContents :: MonadIO m =>
338− ArrayContents -> Ptr a -> (Ptr a -> m b) -> m b
339−unsafeWithArrayContents contents ptr f = do
340− r <- f ptr
341− liftIO $ touch contents
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
342340 return r
343341
344342-------------------------------------------------------------------------------
@@ -532,7 +530,7 @@ withNewArrayUnsafe ::
532530 (MonadIO m, Storable a) => Int -> (Ptr a -> m ()) -> m (Array a)
533531withNewArrayUnsafe count f = do
534532 arr <- newArray count
535− unsafeWithArrayContents (arrContents arr) (arrStart arr)
533+ unsafeWithArray arr
536534 $ \p -> f p >> return arr
537535
538536-------------------------------------------------------------------------------
@@ -546,8 +544,8 @@ withNewArrayUnsafe count f = do
546544{-# INLINE putIndexUnsafe #-}
547545putIndexUnsafe :: forall m a. (MonadIO m, Storable a)
548546 => Int -> a -> Array a -> m ()
549−putIndexUnsafe i x Array{..} =
550− unsafeWithArrayContents arrContents arrStart $ \ptr -> do
547+putIndexUnsafe i x arr@(Array{..}) =
548+ unsafeWithArray arr $ \ptr -> do
551549 let elemPtr = PTR_INDEX(ptr,i,a)
552550 assert (i >= 0 && PTR_VALID(elemPtr,aEnd,a)) (return ())
553551 liftIO $ poke elemPtr x
@@ -576,7 +574,7 @@ putIndexPtr start end i x = do
576574{-# INLINE putIndex #-}
577575putIndex :: (MonadIO m, Storable a) => Int -> a -> Array a -> m ()
578576putIndex i x arr =
579− unsafeWithArrayContents (arrContents arr) (arrStart arr)
577+ unsafeWithArray arr
580578 $ \p -> putIndexPtr p (aEnd arr) i x
581579
582580-- | Write an input stream of (index, value) pairs to an array. Throws an
@@ -601,8 +599,8 @@ putIndices Array{..} = FL.mkFoldM step initial extract
601599-- /Pre-release/
602600modifyIndexUnsafe :: forall m a b. (MonadIO m, Storable a) =>
603601 Int -> (a -> (a, b)) -> Array a -> m b
604−modifyIndexUnsafe i f Array{..} = do
605− liftIO $ unsafeWithArrayContents arrContents arrStart $ \ptr -> do
602+modifyIndexUnsafe i f arr@(Array{..}) = do
603+ liftIO $ unsafeWithArray arr $ \ptr -> do
606604 let elemPtr = PTR_INDEX(ptr,i,a)
607605 assert (i >= 0 && PTR_NEXT(elemPtr,a) <= aEnd) (return ())
608606 r <- peek elemPtr
@@ -628,8 +626,8 @@ modifyIndexPtr i f start end = liftIO $ do
628626-- /Pre-release/
629627modifyIndex :: forall m a b. (MonadIO m, Storable a) =>
630628 Int -> (a -> (a, b)) -> Array a -> m b
631−modifyIndex i f Array{..} = do
632− liftIO $ unsafeWithArrayContents arrContents arrStart $ \ptr -> do
629+modifyIndex i f arr@(Array{..}) = do
630+ liftIO $ unsafeWithArray arr $ \ptr -> do
633631 modifyIndexPtr i f ptr aEnd
634632
635633-- | Modify the array indices generated by the supplied stream.
@@ -655,8 +653,8 @@ modifyIndices f Array{..} = Fold step initial extract
655653-- /Pre-release/
656654modify :: forall m a. (MonadIO m, Storable a)
657655 => (a -> a) -> Array a -> m ()
658−modify f Array{..} = liftIO $
659− unsafeWithArrayContents arrContents arrStart go
656+modify f arr@Array{..} = liftIO $
657+ unsafeWithArray arr go
660658
661659 where
662660
@@ -682,8 +680,8 @@ swapPtrs ptr1 ptr2 = do
682680{-# INLINE unsafeSwapIndices #-}
683681unsafeSwapIndices :: forall m a. (MonadIO m, Storable a)
684682 => Int -> Int -> Array a -> m ()
685−unsafeSwapIndices i1 i2 Array{..} = liftIO $ do
686− unsafeWithArrayContents arrContents arrStart $ \ptr -> do
683+unsafeSwapIndices i1 i2 arr = liftIO $ do
684+ unsafeWithArray arr $ \ptr -> do
687685 let ptr1 = PTR_INDEX(ptr,i1,a)
688686 ptr2 = PTR_INDEX(ptr,i2,a)
689687 swapPtrs ptr1 (ptr2 :: Ptr a)
@@ -1049,8 +1047,8 @@ snoc = snocWith f
10491047-- Unsafe because it does not check the bounds of the array.
10501048{-# INLINE_NORMAL getIndexUnsafe #-}
10511049getIndexUnsafe :: forall m a. (MonadIO m, Storable a) => Int -> Array a -> m a
1052−getIndexUnsafe i Array {..} =
1053− unsafeWithArrayContents arrContents arrStart $ \ptr -> do
1050+getIndexUnsafe i arr@(Array {..}) =
1051+ unsafeWithArray arr $ \ptr -> do
10541052 let elemPtr = PTR_INDEX(ptr,i,a)
10551053 assert (i >= 0 && PTR_VALID(elemPtr,aEnd,a)) (return ())
10561054 liftIO $ peek elemPtr
@@ -1069,7 +1067,7 @@ getIndexPtr start end i = do
10691067{-# INLINE getIndex #-}
10701068getIndex :: (MonadIO m, Storable a) => Int -> Array a -> m a
10711069getIndex i arr =
1072− unsafeWithArrayContents (arrContents arr) (arrStart arr)
1070+ unsafeWithArray arr
10731071 $ \p -> getIndexPtr p (aEnd arr) i
10741072
10751073{-# INLINE getIndexPtrRev #-}
@@ -1089,7 +1087,7 @@ getIndexPtrRev start end i = do
10891087{-# INLINE getIndexRev #-}
10901088getIndexRev :: (MonadIO m, Storable a) => Int -> Array a -> m a
10911089getIndexRev i arr =
1092− unsafeWithArrayContents (arrContents arr) (arrStart arr)
1090+ unsafeWithArray arr
10931091 $ \p -> getIndexPtrRev p (aEnd arr) i
10941092
10951093data GetIndicesState contents start end st =
@@ -2250,8 +2248,8 @@ cast arr =
22502248-- /Pre-release/
22512249--
22522250asPtrUnsafe :: Array a -> (Ptr b -> IO c) -> IO c
2253−asPtrUnsafe Array{..} act = do
2254− unsafeWithArrayContents arrContents arrStart $ \ptr -> act (castPtr ptr)
2251+asPtrUnsafe arr act = do
2252+ unsafeWithArray arr $ \ptr -> act (castPtr ptr)
22552253
22562254-------------------------------------------------------------------------------
22572255-- Equality