on master help sign in
Rename Foreign.unsafeWithArray as Foreign.asPtrUnsafe
commit029a81aeef14dd48ae5f31f0025c4bb81fe635ca authorAdithya Kumar <adithya@composewell.com> dateSun 6 Feb 2022, 02:33 (5 years ago) parent27796a8
3 files changed+17−12
src/Streamly/Internal/Data/Array/Foreign.hs+5−5 src/Streamly/Internal/Data/Array/Foreign/Type.hs+9−4 src/Streamly/Internal/FileSystem/FD.hs+3−3
src/Streamly/Internal/Data/Array/Foreign.hs+5−5
@@ -133,7 +133,7 @@ import GHC.Ptr (Ptr(..))
133133
134134import Streamly.Internal.Data.Array.Foreign.Mut.Type (ReadUState(..), touch)
135135import Streamly.Internal.Data.Array.Foreign.Type
136− (Array(..), length, unsafeWithArray)
136+ (Array(..), length, asPtrUnsafe)
137137import Streamly.Internal.Data.Fold.Type (Fold(..))
138138import Streamly.Internal.Data.Producer.Type (Producer(..))
139139import Streamly.Internal.Data.Stream.Serial (SerialT(..))
@@ -270,7 +270,7 @@ null arr = A.byteLength arr == 0
270270getIndexRev :: forall a. Storable a => Int -> Array a -> Maybe a
271271getIndexRev i arr =
272272 unsafeInlineIO
273− $ unsafeWithArray arr
273+ $ asPtrUnsafe arr
274274 $ \ptr -> do
275275 let elemPtr = PTR_RINDEX(aEnd arr,i,a)
276276 if i >= 0 && elemPtr >= ptr
@@ -437,7 +437,7 @@ getSlicesFromLen from len =
437437getIndex :: forall a. Storable a => Array a -> Int -> Maybe a
438438getIndex arr i =
439439 unsafeInlineIO
440− $ unsafeWithArray arr
440+ $ asPtrUnsafe arr
441441 $ \ptr -> do
442442 let elemPtr = PTR_INDEX(ptr,i,a)
443443 if i >= 0 && PTR_VALID(elemPtr,aEnd arr,a)
@@ -563,7 +563,7 @@ cast arr =
563563--
564564unsafeAsPtr :: Array a -> (Ptr b -> IO c) -> IO c
565565unsafeAsPtr arr act = do
566− unsafeWithArray arr $ \ptr -> act (castPtr ptr)
566+ asPtrUnsafe arr $ \ptr -> act (castPtr ptr)
567567
568568-- | Convert an array of any type into a null terminated CString Ptr.
569569--
@@ -576,7 +576,7 @@ unsafeAsPtr arr act = do
576576unsafeAsCString :: Array a -> (CString -> IO b) -> IO b
577577unsafeAsCString arr act = do
578578 let arr1 = asBytes arr <> A.fromList [0]
579− unsafeWithArray arr1 $ \ptr -> act (castPtr ptr)
579+ asPtrUnsafe arr1 $ \ptr -> act (castPtr ptr)
580580
581581-------------------------------------------------------------------------------
582582-- Folds
src/Streamly/Internal/Data/Array/Foreign/Type.hs+9−4
@@ -13,7 +13,7 @@ module Streamly.Internal.Data.Array.Foreign.Type
1313 (
1414 -- $arrayNotes
1515 Array (..)
16− , unsafeWithArray
16+ , asPtrUnsafe
1717
1818 -- * Freezing and Thawing
1919 , unsafeFreeze
@@ -159,9 +159,14 @@ data Array a =
159159foreign import ccall unsafe "string.h strlen" c_strlen
160160 :: CString -> IO CSize
161161
162−-- | Similar to unsafeWithForeignPtr.
163−unsafeWithArray :: MonadIO m => Array a -> (Ptr a -> m b) -> m b
164−unsafeWithArray Array{..} f = do
162+-- | Use an @Array a@ as @Ptr a@.
163+--
164+-- /Unsafe/
165+--
166+-- /Pre-release/
167+--
168+asPtrUnsafe :: MonadIO m => Array a -> (Ptr a -> m b) -> m b
169+asPtrUnsafe Array{..} f = do
165170 r <- f arrStart
166171 liftIO $ touch arrContents
167172 return r
src/Streamly/Internal/FileSystem/FD.hs+3−3
@@ -131,7 +131,7 @@ import qualified GHC.IO.FD as FD
131131import qualified GHC.IO.Device as RawIO
132132
133133import Streamly.Internal.Data.Array.Foreign.Type
134− (Array(..), byteLength, unsafeFreeze, unsafeWithArray)
134+ (Array(..), byteLength, unsafeFreeze, asPtrUnsafe)
135135import Streamly.Internal.Data.Array.Foreign.Mut.Type (fromForeignPtrUnsafe)
136136import Streamly.Internal.System.IO (defaultChunkSize)
137137import Streamly.Internal.Data.Stream.Serial (SerialT)
@@ -240,7 +240,7 @@ readArrayUpto size (Handle fd) = do
240240writeArray :: Storable a => Handle -> Array a -> IO ()
241241writeArray _ arr | A.length arr == 0 = return ()
242242writeArray (Handle fd) arr =
243− unsafeWithArray arr $ \p ->
243+ asPtrUnsafe arr $ \p ->
244244 -- RawIO.writeAll fd (castPtr p) aLen
245245#if MIN_VERSION_base(4,15,0)
246246 RawIO.write fd (castPtr p) 0 aLen
@@ -265,7 +265,7 @@ writeArray (Handle fd) arr =
265265writeIOVec :: Handle -> Array RawIO.IOVec -> IO ()
266266writeIOVec _ iov | A.length iov == 0 = return ()
267267writeIOVec (Handle fd) iov =
268− unsafeWithArray iov $ \p ->
268+ asPtrUnsafe iov $ \p ->
269269 RawIO.writevAll fd p (A.length iov)
270270#endif
271271