on master help sign in
Rename Foreign.unsafeWithArray as Foreign.asPtrUnsafe
029a81aAdithya Kumar
src/Streamly/Internal/Data/Array/Foreign.hs+5−5
@@ -133,7 +133,7 @@ import GHC.Ptr (Ptr(..))
133
133
134import Streamly.Internal.Data.Array.Foreign.Mut.Type (ReadUState(..), touch)
134import Streamly.Internal.Data.Array.Foreign.Mut.Type (ReadUState(..), touch)
135import Streamly.Internal.Data.Array.Foreign.Type
135import Streamly.Internal.Data.Array.Foreign.Type
136− (Array(..), length, unsafeWithArray)
136+ (Array(..), length, asPtrUnsafe)
137import Streamly.Internal.Data.Fold.Type (Fold(..))
137import Streamly.Internal.Data.Fold.Type (Fold(..))
138import Streamly.Internal.Data.Producer.Type (Producer(..))
138import Streamly.Internal.Data.Producer.Type (Producer(..))
139import Streamly.Internal.Data.Stream.Serial (SerialT(..))
139import Streamly.Internal.Data.Stream.Serial (SerialT(..))
@@ -270,7 +270,7 @@ null arr = A.byteLength arr == 0
270getIndexRev :: forall a. Storable a => Int -> Array a -> Maybe a
270getIndexRev :: forall a. Storable a => Int -> Array a -> Maybe a
271getIndexRev i arr =
271getIndexRev i arr =
272 unsafeInlineIO
272 unsafeInlineIO
273− $ unsafeWithArray arr
273+ $ asPtrUnsafe arr
274 $ \ptr -> do
274 $ \ptr -> do
275 let elemPtr = PTR_RINDEX(aEnd arr,i,a)
275 let elemPtr = PTR_RINDEX(aEnd arr,i,a)
276 if i >= 0 && elemPtr >= ptr
276 if i >= 0 && elemPtr >= ptr
@@ -437,7 +437,7 @@ getSlicesFromLen from len =
437getIndex :: forall a. Storable a => Array a -> Int -> Maybe a
437getIndex :: forall a. Storable a => Array a -> Int -> Maybe a
438getIndex arr i =
438getIndex arr i =
439 unsafeInlineIO
439 unsafeInlineIO
440− $ unsafeWithArray arr
440+ $ asPtrUnsafe arr
441 $ \ptr -> do
441 $ \ptr -> do
442 let elemPtr = PTR_INDEX(ptr,i,a)
442 let elemPtr = PTR_INDEX(ptr,i,a)
443 if i >= 0 && PTR_VALID(elemPtr,aEnd arr,a)
443 if i >= 0 && PTR_VALID(elemPtr,aEnd arr,a)
@@ -563,7 +563,7 @@ cast arr =
563--
563--
564unsafeAsPtr :: Array a -> (Ptr b -> IO c) -> IO c
564unsafeAsPtr :: Array a -> (Ptr b -> IO c) -> IO c
565unsafeAsPtr arr act = do
565unsafeAsPtr arr act = do
566− unsafeWithArray arr $ \ptr -> act (castPtr ptr)
566+ asPtrUnsafe arr $ \ptr -> act (castPtr ptr)
567
567
568-- | Convert an array of any type into a null terminated CString Ptr.
568-- | Convert an array of any type into a null terminated CString Ptr.
569--
569--
@@ -576,7 +576,7 @@ unsafeAsPtr arr act = do
576unsafeAsCString :: Array a -> (CString -> IO b) -> IO b
576unsafeAsCString :: Array a -> (CString -> IO b) -> IO b
577unsafeAsCString arr act = do
577unsafeAsCString arr act = do
578 let arr1 = asBytes arr <> A.fromList [0]
578 let arr1 = asBytes arr <> A.fromList [0]
579− unsafeWithArray arr1 $ \ptr -> act (castPtr ptr)
579+ asPtrUnsafe arr1 $ \ptr -> act (castPtr ptr)
580
580
581-------------------------------------------------------------------------------
581-------------------------------------------------------------------------------
582-- Folds
582-- Folds
src/Streamly/Internal/Data/Array/Foreign/Type.hs+9−4
@@ -13,7 +13,7 @@ module Streamly.Internal.Data.Array.Foreign.Type
13 (
13 (
14 -- $arrayNotes
14 -- $arrayNotes
15 Array (..)
15 Array (..)
16− , unsafeWithArray
16+ , asPtrUnsafe
17
17
18 -- * Freezing and Thawing
18 -- * Freezing and Thawing
19 , unsafeFreeze
19 , unsafeFreeze
@@ -159,9 +159,14 @@ data Array a =
159foreign import ccall unsafe "string.h strlen" c_strlen
159foreign import ccall unsafe "string.h strlen" c_strlen
160 :: CString -> IO CSize
160 :: CString -> IO CSize
161
161
162−-- | Similar to unsafeWithForeignPtr.
162+-- | Use an @Array a@ as @Ptr a@.
163+--
164+-- /Unsafe/
165+--
166+-- /Pre-release/
167+--
163−unsafeWithArray :: MonadIO m => Array a -> (Ptr a -> m b) -> m b
168+asPtrUnsafe :: MonadIO m => Array a -> (Ptr a -> m b) -> m b
164−unsafeWithArray Array{..} f = do
169+asPtrUnsafe Array{..} f = do
165 r <- f arrStart
170 r <- f arrStart
166 liftIO $ touch arrContents
171 liftIO $ touch arrContents
167 return r
172 return r
src/Streamly/Internal/FileSystem/FD.hs+3−3
@@ -131,7 +131,7 @@ import qualified GHC.IO.FD as FD
131import qualified GHC.IO.Device as RawIO
131import qualified GHC.IO.Device as RawIO
132
132
133import Streamly.Internal.Data.Array.Foreign.Type
133import Streamly.Internal.Data.Array.Foreign.Type
134− (Array(..), byteLength, unsafeFreeze, unsafeWithArray)
134+ (Array(..), byteLength, unsafeFreeze, asPtrUnsafe)
135import Streamly.Internal.Data.Array.Foreign.Mut.Type (fromForeignPtrUnsafe)
135import Streamly.Internal.Data.Array.Foreign.Mut.Type (fromForeignPtrUnsafe)
136import Streamly.Internal.System.IO (defaultChunkSize)
136import Streamly.Internal.System.IO (defaultChunkSize)
137import Streamly.Internal.Data.Stream.Serial (SerialT)
137import Streamly.Internal.Data.Stream.Serial (SerialT)
@@ -240,7 +240,7 @@ readArrayUpto size (Handle fd) = do
240writeArray :: Storable a => Handle -> Array a -> IO ()
240writeArray :: Storable a => Handle -> Array a -> IO ()
241writeArray _ arr | A.length arr == 0 = return ()
241writeArray _ arr | A.length arr == 0 = return ()
242writeArray (Handle fd) arr =
242writeArray (Handle fd) arr =
243− unsafeWithArray arr $ \p ->
243+ asPtrUnsafe arr $ \p ->
244 -- RawIO.writeAll fd (castPtr p) aLen
244 -- RawIO.writeAll fd (castPtr p) aLen
245#if MIN_VERSION_base(4,15,0)
245#if MIN_VERSION_base(4,15,0)
246 RawIO.write fd (castPtr p) 0 aLen
246 RawIO.write fd (castPtr p) 0 aLen
@@ -265,7 +265,7 @@ writeArray (Handle fd) arr =
265writeIOVec :: Handle -> Array RawIO.IOVec -> IO ()
265writeIOVec :: Handle -> Array RawIO.IOVec -> IO ()
266writeIOVec _ iov | A.length iov == 0 = return ()
266writeIOVec _ iov | A.length iov == 0 = return ()
267writeIOVec (Handle fd) iov =
267writeIOVec (Handle fd) iov =
268− unsafeWithArray iov $ \p ->
268+ asPtrUnsafe iov $ \p ->
269 RawIO.writevAll fd p (A.length iov)
269 RawIO.writevAll fd p (A.length iov)
270#endif
270#endif
271
271