streamly-bytestring 0.2.0 → 0.2.1
raw patch · 5 files changed
+49/−12 lines, 5 filesdep ~bytestringdep ~streamly-core
Dependency ranges changed: bytestring, streamly-core
Files
- Changelog.md +4/−0
- src/Streamly/External/ByteString.hs +25/−9
- src/Streamly/External/ByteString/Lazy.hs +9/−1
- streamly-bytestring.cabal +5/−2
- test/Main.hs +6/−0
Changelog.md view
@@ -1,5 +1,9 @@ # Changelog for streamly-bytestring +## 0.2.1 (Dec 2023)++* Support streamly-core-0.2.0+ ## 0.2.0 (Mar 2023) * Support streamly-core-0.1.0
src/Streamly/External/ByteString.hs view
@@ -37,25 +37,39 @@ -- Internal imports import Data.ByteString.Internal (ByteString(..))-import Streamly.Internal.Data.Array.Type (Array(..))-import Streamly.Internal.Data.Unboxed (MutableByteArray(..)) import Streamly.Internal.System.IO (unsafeInlineIO) import qualified Streamly.Data.Array as Array import qualified Streamly.Internal.Data.Unfold as Unfold (fold, mkUnfoldrM)-import qualified Streamly.Internal.Data.Unboxed as Unboxed (nil)++#if MIN_VERSION_streamly_core(0,2,0)+import Streamly.Internal.Data.Array (Array(..))+import Streamly.Internal.Data.MutByteArray (MutByteArray(..))+import qualified Streamly.Internal.Data.MutByteArray as MutBA (nil)+import qualified Streamly.Internal.Data.Stream as StreamD (Step(Yield))+#else+import Streamly.Internal.Data.Array.Type (Array(..))+import Streamly.Internal.Data.Unboxed (MutableByteArray(..))+import qualified Streamly.Internal.Data.Unboxed as MutBA (nil) import qualified Streamly.Internal.Data.Stream.StreamD as StreamD (Step(Yield))+#endif import Prelude hiding (read) +#if MIN_VERSION_streamly_core(0,2,0)+#define MUT_BYTE_ARRAY MutByteArray+#else+#define MUT_BYTE_ARRAY MutableByteArray+#endif+ {-# INLINE mutableByteArrayContents# #-} mutableByteArrayContents# :: MutableByteArray# RealWorld -> Addr# mutableByteArrayContents# marr# = byteArrayContents# (unsafeCoerce# marr#) -- | Helper function that creates a ForeignPtr {-# INLINE makeForeignPtr #-}-makeForeignPtr :: MutableByteArray -> Int -> ForeignPtr a-makeForeignPtr (MutableByteArray marr#) (I# off#) =+makeForeignPtr :: MUT_BYTE_ARRAY -> Int -> ForeignPtr a+makeForeignPtr (MUT_BYTE_ARRAY marr#) (I# off#) = ForeignPtr (mutableByteArrayContents# marr# `plusAddr#` off#) (PlainPtr marr#)@@ -66,10 +80,10 @@ {-# INLINE toArray #-} toArray :: ByteString -> Array Word8 toArray (BS (ForeignPtr addr# _) _)- | Ptr addr# == nullPtr = Array Unboxed.nil 0 0+ | Ptr addr# == nullPtr = Array MutBA.nil 0 0 toArray (BS (ForeignPtr addr# (PlainPtr marr#)) len) = let off = I# (addr# `minusAddr#` mutableByteArrayContents# marr#)- in Array (MutableByteArray marr#) off (off + len)+ in Array (MUT_BYTE_ARRAY marr#) off (off + len) toArray (BS fptr len) = unsafeInlineIO $ withForeignPtr fptr $ Unfold.fold (Array.writeN len) generator@@ -85,10 +99,12 @@ -- is performed in constant time. {-# INLINE fromArray #-} fromArray :: Array Word8 -> ByteString-fromArray Array {..}+fromArray (Array {..}) | aLen == 0 = mempty | otherwise = BS (makeForeignPtr arrContents arrStart) aLen- where++ where+ aLen = arrEnd - arrStart -- | Unfold a strict ByteString to a stream of Word8.
src/Streamly/External/ByteString/Lazy.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ module Streamly.External.ByteString.Lazy ( chunkReader , reader@@ -19,8 +21,14 @@ -- Internal imports import Data.ByteString.Lazy.Internal (ByteString(..), chunk)-import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))++#if MIN_VERSION_streamly_core(0,2,0)+import Streamly.Internal.Data.Unfold (Unfold(..))+import Streamly.Internal.Data.Stream (Step(..))+#else import Streamly.Internal.Data.Unfold.Type (Unfold(..))+import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))+#endif import qualified Streamly.External.ByteString as Strict import qualified Streamly.Data.Array as Array
streamly-bytestring.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: streamly-bytestring-version: 0.2.0+version: 0.2.1 synopsis: Library for streamly and bytestring interoperation. description: Please see the README on GitHub at <https://github.com/psibi/streamly-bytestring#readme> category: Streamly, Stream, ByteString@@ -21,6 +21,7 @@ , GHC==9.0.1 , GHC==9.2.7 , GHC==9.4.4+ , GHC==9.6.2 source-repository head type: git@@ -44,7 +45,9 @@ -- windows. || ( >= 0.11.3.1 && < 0.11.4 ) || == 0.11.4.*- , streamly-core == 0.1.0.*+ || == 0.11.5.*+ || == 0.12.0.*+ , streamly-core >= 0.1.0 && < 0.2.2 default-language: Haskell2010 test-suite sb-test
test/Main.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} module Main where@@ -14,7 +15,12 @@ import Test.QuickCheck.Instances.ByteString () -- Internal imports+#if MIN_VERSION_streamly_core(0,2,0)+import Streamly.Internal.Data.Array (Array(..))+#else import Streamly.Internal.Data.Array.Type (Array(..))+#endif+ import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BSL