mirror of
https://github.com/composewell/streamly.git
synced 2024-10-26 11:39:05 +03:00
Deprecate Streamly.Data.Array.Foreign module
Rename it to Streamly.Data.Array.Unboxed
This commit is contained in:
parent
53cce5e7ac
commit
26b78c6e89
@ -9,7 +9,7 @@
|
||||
import Streamly.Prelude (SerialT)
|
||||
import Streamly.Internal.Data.SVar (MonadAsync)
|
||||
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
import qualified Streamly.Data.Array.Unboxed as A
|
||||
import qualified Streamly.FileSystem.Handle as FH
|
||||
import qualified Streamly.Internal.FileSystem.Handle as IFH
|
||||
import qualified Streamly.Data.Fold as FL
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
import Control.DeepSeq (deepseq)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as IA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as IA
|
||||
import qualified GHC.Exts as GHC
|
||||
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
type Stream = A.Array
|
||||
|
||||
#include "Streamly/Benchmark/Data/Array/Common.hs"
|
||||
|
@ -40,8 +40,8 @@ import Prelude
|
||||
, undefined
|
||||
)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut as MArray
|
||||
import qualified Streamly.Internal.Data.Stream.Type as Stream
|
||||
import qualified Streamly.Prelude as Stream
|
||||
|
||||
|
@ -34,7 +34,7 @@ import System.Random (randomRIO)
|
||||
import Prelude hiding ()
|
||||
|
||||
import qualified Streamly.Prelude as Stream
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as ArrayStream
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Parser as Parser
|
||||
|
@ -32,7 +32,7 @@ import qualified Data.Foldable as F
|
||||
import qualified Control.Applicative as AP
|
||||
import qualified Streamly.FileSystem.Handle as Handle
|
||||
import qualified Streamly.Prelude as S
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser as PR
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as IP
|
||||
|
@ -26,7 +26,7 @@ import qualified Data.Traversable as TR
|
||||
import qualified Data.Foldable as F
|
||||
import qualified Control.Applicative as AP
|
||||
import qualified Streamly.Prelude as S
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as PR
|
||||
import qualified Streamly.Internal.Data.Producer as Producer
|
||||
|
@ -13,7 +13,7 @@ module Main (main) where
|
||||
import Control.Monad (void)
|
||||
import GHC.Ptr (Ptr(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
import qualified Streamly.Internal.Data.Ring.Foreign as Ring
|
||||
import qualified Data.Foldable as P
|
||||
|
||||
|
@ -28,8 +28,8 @@ import GHC.Magic (noinline)
|
||||
import System.IO (Handle)
|
||||
|
||||
import qualified Streamly.FileSystem.Handle as FH
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as AT
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as AT
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as IP
|
||||
import qualified Streamly.Internal.FileSystem.Handle as IFH
|
||||
@ -44,7 +44,7 @@ import Streamly.Benchmark.Common.Handle
|
||||
#ifdef INSPECTION
|
||||
import Streamly.Internal.Data.Stream.StreamD.Type (Step(..), FoldMany)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
import qualified Streamly.Internal.Data.Unfold as IUF
|
||||
|
||||
|
@ -29,7 +29,7 @@ import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
import qualified Streamly.FileSystem.Handle as FH
|
||||
import qualified Streamly.Internal.Data.Unfold as IUF
|
||||
import qualified Streamly.Internal.FileSystem.Handle as IFH
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
import qualified Streamly.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Prelude as S
|
||||
|
||||
import Gauge hiding (env)
|
||||
@ -41,7 +41,7 @@ import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
|
||||
import qualified Streamly.Internal.Data.Tuple.Strict as Strict
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Mut.Foreign as MAS
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as AT
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as AT
|
||||
|
||||
import Test.Inspection
|
||||
#endif
|
||||
|
@ -25,7 +25,7 @@ import Data.Word (Word8)
|
||||
import System.IO (Handle)
|
||||
|
||||
import qualified Streamly.FileSystem.Handle as FH
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser as PR
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as IP
|
||||
@ -41,7 +41,7 @@ import Streamly.Benchmark.Common.Handle
|
||||
#ifdef INSPECTION
|
||||
import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Unfold as IUF
|
||||
|
||||
import Test.Inspection
|
||||
|
@ -11,7 +11,7 @@
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
import Control.DeepSeq (NFData)
|
||||
import Streamly.Internal.Data.Array.Foreign (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed (Array)
|
||||
import System.FilePath (dropExtensions, takeFileName)
|
||||
import System.FilePath.Posix ((</>))
|
||||
import Gauge.Main (Benchmark, bench, bgroup, defaultMain, env, nfIO)
|
||||
@ -21,7 +21,7 @@ import Streamly.Internal.Unicode.Char
|
||||
)
|
||||
import Streamly.Benchmark.Common (o_1_space_prefix)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as IsStream
|
||||
import qualified System.Directory as Dir
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
import Prelude hiding (last, length)
|
||||
import System.IO (Handle)
|
||||
|
||||
import qualified Streamly.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Data.Fold as Fold
|
||||
import qualified Streamly.FileSystem.Handle as Handle
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
@ -39,7 +39,7 @@ import Streamly.Internal.Data.Unboxed (Storable)
|
||||
import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
|
||||
import qualified Streamly.Internal.Data.Fold.Type as Fold
|
||||
import qualified Streamly.Internal.Data.Tuple.Strict as Strict
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
|
||||
import Test.Inspection
|
||||
#endif
|
||||
|
104
core/src/Streamly/Data/Array/Unboxed.hs
Normal file
104
core/src/Streamly/Data/Array/Unboxed.hs
Normal file
@ -0,0 +1,104 @@
|
||||
#include "inline.hs"
|
||||
|
||||
-- |
|
||||
-- Module : Streamly.Data.Array.Unboxed
|
||||
-- Copyright : (c) 2019 Composewell Technologies
|
||||
--
|
||||
-- License : BSD3
|
||||
-- Maintainer : streamly@composewell.com
|
||||
-- Stability : released
|
||||
-- Portability : GHC
|
||||
--
|
||||
-- This module provides immutable arrays in pinned memory (non GC memory)
|
||||
-- suitable for long lived data storage, random access and for interfacing with
|
||||
-- the operating system.
|
||||
--
|
||||
-- Arrays in this module are chunks of pinned memory that hold a sequence of
|
||||
-- 'Storable' values of a given type, they cannot store non-serializable data
|
||||
-- like functions. Once created an array cannot be modified. Pinned memory
|
||||
-- allows efficient buffering of long lived data without adding any impact to
|
||||
-- GC. One array is just one pointer visible to GC and it does not have to be
|
||||
-- copied across generations. Moreover, pinned memory allows communication
|
||||
-- with foreign consumers and producers (e.g. file or network IO) without
|
||||
-- copying the data.
|
||||
--
|
||||
-- = Programmer Notes
|
||||
--
|
||||
-- Array creation APIs require a 'MonadIO' Monad, except 'fromList' which is a
|
||||
-- pure API. To operate on streams in pure Monads like 'Identity' you can hoist
|
||||
-- it to IO monad as follows:
|
||||
--
|
||||
-- >>> import Data.Functor.Identity (Identity, runIdentity)
|
||||
-- >>> s = Stream.fromList [1..10] :: SerialT Identity Int
|
||||
-- >>> s1 = Stream.hoist (return . runIdentity) s :: SerialT IO Int
|
||||
-- >>> Stream.fold Array.write s1 :: IO (Array Int)
|
||||
-- [1,2,3,4,5,6,7,8,9,10]
|
||||
--
|
||||
-- 'unsafePerformIO' can be used to get a pure API from IO, as long as you know
|
||||
-- it is safe to do so:
|
||||
--
|
||||
-- >>> import System.IO.Unsafe (unsafePerformIO)
|
||||
-- >>> unsafePerformIO $ Stream.fold Array.write s1 :: Array Int
|
||||
-- [1,2,3,4,5,6,7,8,9,10]
|
||||
--
|
||||
-- To apply a transformation to an array use 'read' to unfold the array into a
|
||||
-- stream, apply a transformation on the stream and then use 'write' to fold it
|
||||
-- back to an array.
|
||||
--
|
||||
-- This module is designed to be imported qualified:
|
||||
--
|
||||
-- > import qualified Streamly.Data.Array.Unboxed as Array
|
||||
--
|
||||
-- For experimental APIs see "Streamly.Internal.Data.Array.Unboxed".
|
||||
|
||||
module Streamly.Data.Array.Unboxed
|
||||
(
|
||||
A.Array
|
||||
|
||||
-- * Arrays
|
||||
-- ** Construction
|
||||
-- | When performance matters, the fastest way to generate an array is
|
||||
-- 'writeN'. 'IsList' and 'IsString' instances can be
|
||||
-- used to conveniently construct arrays from literal values.
|
||||
-- 'OverloadedLists' extension or 'fromList' can be used to construct an
|
||||
-- array from a list literal. Similarly, 'OverloadedStrings' extension or
|
||||
-- 'fromList' can be used to construct an array from a string literal.
|
||||
|
||||
-- Pure List APIs
|
||||
, A.fromListN
|
||||
, A.fromList
|
||||
|
||||
-- Monadic APIs
|
||||
, A.writeN -- drop new
|
||||
, A.write -- full buffer
|
||||
, writeLastN -- drop old (ring buffer)
|
||||
|
||||
-- ** Elimination
|
||||
-- 'GHC.Exts.toList' from "GHC.Exts" can be used to convert an array to a
|
||||
-- list.
|
||||
|
||||
, A.toList
|
||||
, A.read
|
||||
, A.readRev
|
||||
|
||||
-- ** Casting
|
||||
, cast
|
||||
, asBytes
|
||||
|
||||
-- ** Random Access
|
||||
, A.length
|
||||
-- , (!!)
|
||||
, A.getIndex
|
||||
)
|
||||
where
|
||||
|
||||
import Streamly.Internal.Data.Array.Unboxed as A
|
||||
|
||||
-- $setup
|
||||
-- >>> :m
|
||||
-- >>> :set -XFlexibleContexts
|
||||
-- >>> :set -package streamly
|
||||
-- >>> import Streamly.Prelude (SerialT)
|
||||
-- >>> import Streamly.Data.Array.Unboxed (Array)
|
||||
-- >>> import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
@ -62,12 +62,12 @@ import Control.Monad.Catch (MonadThrow)
|
||||
import Control.Monad.IO.Class (MonadIO(..))
|
||||
import Streamly.Internal.Data.Unboxed (Storable, peekWith, sizeOf)
|
||||
import GHC.Types (SPEC(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (touch)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (touch)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
|
||||
import Streamly.Internal.Data.Parser.ParserD (Initial(..), Step(..))
|
||||
import Streamly.Internal.Data.Tuple.Strict (Tuple'(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as ParserD
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD.Type as ParserD
|
||||
|
@ -32,12 +32,12 @@ import Control.Monad (when)
|
||||
import Control.Monad.Catch (MonadThrow)
|
||||
import Data.Bifunctor (first)
|
||||
import Streamly.Internal.Data.Unboxed (Storable, sizeOf)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (Array(..))
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
import Streamly.Internal.Data.Tuple.Strict (Tuple'(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Fold.Type as FL
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as ParserD
|
||||
@ -92,7 +92,7 @@ packArraysChunksOf n (D.Stream step state) =
|
||||
step' gst (SpliceInitial st) = do
|
||||
when (n <= 0) $
|
||||
-- XXX we can pass the module string from the higher level API
|
||||
error $ "Streamly.Internal.Data.Array.Foreign.Mut.Type.packArraysChunksOf: the size of "
|
||||
error $ "Streamly.Internal.Data.Array.Unboxed.Mut.Type.packArraysChunksOf: the size of "
|
||||
++ "arrays [" ++ show n ++ "] must be a natural number"
|
||||
r <- step gst st
|
||||
case r of
|
||||
@ -139,7 +139,7 @@ lpackArraysChunksOf n (Fold step1 initial1 extract1) =
|
||||
initial = do
|
||||
when (n <= 0) $
|
||||
-- XXX we can pass the module string from the higher level API
|
||||
error $ "Streamly.Internal.Data.Array.Foreign.Mut.Type.packArraysChunksOf: the size of "
|
||||
error $ "Streamly.Internal.Data.Array.Unboxed.Mut.Type.packArraysChunksOf: the size of "
|
||||
++ "arrays [" ++ show n ++ "] must be a natural number"
|
||||
|
||||
r <- initial1
|
||||
|
@ -28,7 +28,7 @@
|
||||
-- if we use one array for each chunk. This is still significant to add
|
||||
-- pressure to GC.
|
||||
|
||||
module Streamly.Internal.Data.Array.Foreign
|
||||
module Streamly.Internal.Data.Array.Unboxed
|
||||
(
|
||||
Array
|
||||
|
||||
@ -126,8 +126,8 @@ import Streamly.Internal.Data.Unboxed
|
||||
)
|
||||
import Prelude hiding (length, null, last, map, (!!), read, concat)
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (ArrayUnsafe(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Type
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (ArrayUnsafe(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type
|
||||
(Array(..), length, asPtrUnsafe)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Producer.Type (Producer(..))
|
||||
@ -136,9 +136,9 @@ import Streamly.Internal.Data.Tuple.Strict (Tuple3Fused'(..))
|
||||
import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
import Streamly.Internal.System.IO (unsafeInlineIO)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut as MA
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Producer.Type as Producer
|
||||
import qualified Streamly.Internal.Data.Producer as Producer
|
||||
@ -231,7 +231,7 @@ unsafeRead = Unfold step inject
|
||||
|
||||
-- |
|
||||
--
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
-- >>> null arr = Array.byteLength arr == 0
|
||||
--
|
||||
-- /Pre-release/
|
||||
@ -254,7 +254,7 @@ getIndexRev i arr =
|
||||
|
||||
-- |
|
||||
--
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
-- >>> last arr = Array.getIndexRev arr 0
|
||||
--
|
||||
-- /Pre-release/
|
@ -1,7 +1,7 @@
|
||||
#include "inline.hs"
|
||||
|
||||
-- |
|
||||
-- Module : Streamly.Internal.Data.Array.Foreign.Mut
|
||||
-- Module : Streamly.Internal.Data.Array.Unboxed.Mut
|
||||
-- Copyright : (c) 2020 Composewell Technologies
|
||||
-- License : BSD-3-Clause
|
||||
-- Maintainer : streamly@composewell.com
|
||||
@ -22,9 +22,9 @@
|
||||
-- Stream and Fold APIs allow easy, efficient and convenient operations on
|
||||
-- arrays.
|
||||
|
||||
module Streamly.Internal.Data.Array.Foreign.Mut
|
||||
module Streamly.Internal.Data.Array.Unboxed.Mut
|
||||
(
|
||||
module Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
module Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
, splitOn
|
||||
, genSlicesFromLen
|
||||
, getSlicesFromLen
|
||||
@ -43,7 +43,7 @@ import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
-- import qualified Streamly.Internal.Data.Stream.Common as P
|
||||
|
||||
import Prelude hiding (foldr, length, read, splitAt)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
|
||||
-- | Split the array into a stream of slices using a predicate. The element
|
||||
-- matching the predicate is dropped.
|
@ -1,6 +1,6 @@
|
||||
{-# LANGUAGE UnboxedTuples #-}
|
||||
-- |
|
||||
-- Module : Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
-- Module : Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
-- Copyright : (c) 2020 Composewell Technologies
|
||||
-- License : BSD3-3-Clause
|
||||
-- Maintainer : streamly@composewell.com
|
||||
@ -12,7 +12,7 @@
|
||||
-- strive to keep the API consistent for both. Ideally, you should be able to
|
||||
-- replace one with another with little changes to the code.
|
||||
|
||||
module Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
module Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
(
|
||||
-- * Type
|
||||
-- $arrayNotes
|
||||
@ -270,7 +270,7 @@ import Prelude hiding
|
||||
|
||||
-- $setup
|
||||
-- >>> :m
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as Array
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as Array
|
||||
-- >>> import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
-- >>> import qualified Streamly.Internal.Data.Stream.StreamD as StreamD
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
@ -1314,7 +1314,7 @@ arraysOf n (D.Stream step state) =
|
||||
step' _ (GroupStart st) = do
|
||||
when (n <= 0) $
|
||||
-- XXX we can pass the module string from the higher level API
|
||||
error $ "Streamly.Internal.Data.Array.Foreign.Mut.Type.arraysOf: "
|
||||
error $ "Streamly.Internal.Data.Array.Unboxed.Mut.Type.arraysOf: "
|
||||
++ "the size of arrays [" ++ show n
|
||||
++ "] must be a natural number"
|
||||
Array contents start end bound <- liftIO $ newArray n
|
@ -1,6 +1,6 @@
|
||||
{-# LANGUAGE UnboxedTuples #-}
|
||||
-- |
|
||||
-- Module : Streamly.Internal.Data.Array.Foreign.Type
|
||||
-- Module : Streamly.Internal.Data.Array.Unboxed.Type
|
||||
-- Copyright : (c) 2020 Composewell Technologies
|
||||
--
|
||||
-- License : BSD3-3-Clause
|
||||
@ -8,9 +8,9 @@
|
||||
-- Stability : experimental
|
||||
-- Portability : GHC
|
||||
--
|
||||
-- See notes in "Streamly.Internal.Data.Array.Foreign.Mut.Type"
|
||||
-- See notes in "Streamly.Internal.Data.Array.Unboxed.Mut.Type"
|
||||
--
|
||||
module Streamly.Internal.Data.Array.Foreign.Type
|
||||
module Streamly.Internal.Data.Array.Unboxed.Type
|
||||
(
|
||||
-- $arrayNotes
|
||||
Array (..)
|
||||
@ -86,7 +86,7 @@ import GHC.Exts (IsList, IsString(..))
|
||||
|
||||
import GHC.IO (unsafePerformIO)
|
||||
import GHC.Ptr (Ptr(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (ArrayContents)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (ArrayContents)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
import Streamly.Internal.Data.Unboxed (Storable, peekWith, sizeOf)
|
||||
@ -95,7 +95,7 @@ import Text.Read (readPrec, readListPrec, readListPrecDefault)
|
||||
|
||||
import Prelude hiding (length, foldr, read, unlines, splitAt)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
|
||||
import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
|
||||
import qualified Streamly.Internal.Data.Stream.Type as Stream
|
||||
@ -117,7 +117,7 @@ import qualified Data.Foldable as F
|
||||
-- >>> :m
|
||||
-- >>> :set -XMagicHash
|
||||
-- >>> import Prelude hiding (length, foldr, read, unlines, splitAt)
|
||||
-- >>> import Streamly.Internal.Data.Array.Foreign as Array
|
||||
-- >>> import Streamly.Internal.Data.Array.Unboxed as Array
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Array Data Type
|
@ -317,8 +317,8 @@ import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
import qualified Data.IntSet as IntSet
|
||||
import qualified Data.Set as Set
|
||||
import qualified Prelude
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
import qualified Streamly.Internal.Data.Fold.Window as FoldW
|
||||
import qualified Streamly.Internal.Data.IsMap as IsMap
|
||||
import qualified Streamly.Internal.Data.Pipe.Type as Pipe
|
||||
@ -345,12 +345,12 @@ import Streamly.Internal.Data.Fold.Type
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold.Type as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold.Window as FoldW
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
-- >>> import qualified Streamly.Internal.Data.Parser as Parser
|
||||
-- >>> import qualified Streamly.Internal.Data.Stream.Type as Stream
|
||||
-- >>> import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
-- >>> import Data.IORef (newIORef, readIORef, writeIORef)
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
-- >>> import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- hoist
|
||||
|
@ -645,7 +645,7 @@ drain = foldl' (\_ _ -> ()) ()
|
||||
-- | Folds the input stream to a list.
|
||||
--
|
||||
-- /Warning!/ working on large lists accumulated as buffers in memory could be
|
||||
-- very inefficient, consider using "Streamly.Data.Array.Foreign"
|
||||
-- very inefficient, consider using "Streamly.Data.Array.Unboxed"
|
||||
-- instead.
|
||||
--
|
||||
-- > toList = foldr (:) []
|
||||
|
@ -246,7 +246,7 @@ import Prelude
|
||||
-- import Streamly.Data.Fold.Types (Fold(..))
|
||||
import Streamly.Internal.Data.Pipe.Type
|
||||
(Pipe(..), PipeState(..), Step(..), zipWith, tee, map, compose)
|
||||
-- import Streamly.Internal.Data.Array.Foreign.Type (Array)
|
||||
-- import Streamly.Internal.Data.Array.Unboxed.Type (Array)
|
||||
-- import Streamly.Internal.Data.Ring.Foreign (Ring)
|
||||
-- import Streamly.Internal.Data.Stream.Serial (SerialT)
|
||||
-- import Streamly.Internal.Data.Stream.StreamK (IsStream())
|
||||
@ -256,7 +256,7 @@ import Streamly.Internal.Data.Pipe.Type
|
||||
|
||||
-- import Streamly.Internal.Data.Strict
|
||||
|
||||
-- import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
-- import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
-- import qualified Streamly.Prelude as S
|
||||
-- import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
-- import qualified Streamly.Internal.Data.Stream.StreamK as K
|
||||
|
@ -87,15 +87,15 @@ import Streamly.Internal.Data.Unboxed as Unboxed
|
||||
)
|
||||
import GHC.ForeignPtr (mallocPlainForeignPtrAlignedBytes)
|
||||
import GHC.Ptr (Ptr(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (Array)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..), Step(..), lmap)
|
||||
import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
import Streamly.Internal.Data.Stream.StreamD.Step (Step(..))
|
||||
import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
import Streamly.Internal.System.IO (unsafeInlineIO)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
|
||||
import Prelude hiding (length, concat, read)
|
||||
|
||||
|
@ -58,7 +58,7 @@ import Streamly.Internal.Data.Fold.Type (Fold (..))
|
||||
import Streamly.Internal.Data.Unboxed (Storable)
|
||||
import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
|
||||
import qualified Streamly.Internal.Data.Stream.StreamK as K
|
||||
@ -78,7 +78,7 @@ import Streamly.Internal.Data.Stream.Type
|
||||
-- >>> import Prelude hiding (take, takeWhile, drop, reverse)
|
||||
-- >>> import System.IO.Unsafe (unsafePerformIO)
|
||||
-- >>> import Streamly.Internal.Data.Stream as Stream
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
-- >>> import qualified Streamly.Data.Unfold as Unfold
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Parser as Parser
|
||||
|
@ -77,7 +77,7 @@ import Foreign.Storable (Storable)
|
||||
import Streamly.Internal.Data.Parser (Parser (..))
|
||||
import Streamly.Internal.Data.Unboxed (Unboxed)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as PRD
|
||||
import qualified Streamly.Internal.Data.Parser.ParserK.Type as PRK
|
||||
|
@ -134,7 +134,7 @@ import Prelude hiding (concat, concatMap, zipWith)
|
||||
-- >>> import Data.Either (either)
|
||||
-- >>> import Data.IORef
|
||||
-- >>> import Prelude hiding (zipWith, concatMap, concat)
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Stream as Stream
|
||||
-- >>> import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
|
@ -52,7 +52,7 @@ where
|
||||
|
||||
import Control.Monad.Catch (MonadThrow)
|
||||
import Control.Monad.IO.Class (MonadIO(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold (..))
|
||||
import Streamly.Internal.Data.Parser (Parser (..))
|
||||
import Streamly.Internal.Data.Refold.Type (Refold (..))
|
||||
@ -60,7 +60,7 @@ import Streamly.Internal.Data.Stream.Bottom (foldManyPost)
|
||||
import Streamly.Internal.Data.Stream.Type (Stream, fromStreamD, toStreamD)
|
||||
import Streamly.Internal.Data.Unboxed (Storable)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as ParserD
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
|
||||
@ -74,7 +74,7 @@ import Prelude hiding (concatMap, map)
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
-- >>> import qualified Streamly.Internal.Data.Parser as Parser
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- Trimming
|
||||
|
@ -159,7 +159,7 @@ import Foreign.Storable (Storable, peek, sizeOf)
|
||||
import Fusion.Plugin.Types (Fuse(..))
|
||||
import GHC.Types (SPEC(..))
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
|
||||
import Streamly.Internal.Data.Fold.Step (Step(..))
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Parser (ParseError(..))
|
||||
@ -169,7 +169,7 @@ import Streamly.Internal.Data.Tuple.Strict (Tuple'(..))
|
||||
import Streamly.Internal.Data.Unboxed (Unboxed)
|
||||
import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser as PR
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as PRD
|
||||
|
@ -1119,7 +1119,7 @@ reverse' :: forall m a. (MonadIO m, Storable a) => Stream m a -> Stream m a
|
||||
import Foreign.ForeignPtr (touchForeignPtr)
|
||||
import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
|
||||
import Foreign.Ptr (Ptr, plusPtr)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (sizeOfElem)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (sizeOfElem)
|
||||
reverse' m = Stream step Nothing
|
||||
where
|
||||
{-# INLINE_LATE step #-}
|
||||
|
@ -278,9 +278,9 @@ library
|
||||
-- Unboxed IORef
|
||||
, Streamly.Internal.Data.IORef.Unboxed
|
||||
-- May depend on streamly-core-stream
|
||||
, Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
, Streamly.Internal.Data.Array.Foreign.Mut
|
||||
, Streamly.Internal.Data.Array.Foreign.Type
|
||||
, Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
, Streamly.Internal.Data.Array.Unboxed.Mut
|
||||
, Streamly.Internal.Data.Array.Unboxed.Type
|
||||
, Streamly.Internal.Data.Array.Mut.Type
|
||||
|
||||
-- streamly-core-streams
|
||||
@ -325,7 +325,7 @@ library
|
||||
-- streamly-core-data-arrays
|
||||
-- XXX Depends on primitive
|
||||
, Streamly.Internal.Data.Array
|
||||
, Streamly.Internal.Data.Array.Foreign
|
||||
, Streamly.Internal.Data.Array.Unboxed
|
||||
, Streamly.Internal.Data.Array.Stream.Mut.Foreign
|
||||
, Streamly.Internal.Data.Array.Stream.Fold.Foreign
|
||||
|
||||
@ -340,7 +340,7 @@ library
|
||||
-- streamly-core exposed modules
|
||||
, Streamly.Data.Fold
|
||||
, Streamly.Data.Fold.Tee
|
||||
, Streamly.Data.Array.Foreign
|
||||
, Streamly.Data.Array.Unboxed
|
||||
|
||||
build-depends:
|
||||
-- Core libraries shipped with ghc, the min and max
|
||||
|
@ -47,11 +47,12 @@
|
||||
--
|
||||
-- This module is designed to be imported qualified:
|
||||
--
|
||||
-- > import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- > import qualified Streamly.Data.Array.Unboxed as Array
|
||||
--
|
||||
-- For experimental APIs see "Streamly.Internal.Data.Array.Foreign".
|
||||
-- For experimental APIs see "Streamly.Internal.Data.Array.Unboxed".
|
||||
|
||||
module Streamly.Data.Array.Foreign
|
||||
{-# DEPRECATED "Please use \"Streamly.Data.Array.Unboxed\" instead." #-}
|
||||
(
|
||||
A.Array
|
||||
|
||||
@ -92,13 +93,13 @@ module Streamly.Data.Array.Foreign
|
||||
)
|
||||
where
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign as A
|
||||
import Streamly.Internal.Data.Array.Unboxed as A
|
||||
|
||||
-- $setup
|
||||
-- >>> :m
|
||||
-- >>> :set -XFlexibleContexts
|
||||
-- >>> :set -package streamly
|
||||
-- >>> import Streamly.Prelude (SerialT)
|
||||
-- >>> import Streamly.Data.Array.Foreign (Array)
|
||||
-- >>> import Streamly.Data.Array.Unboxed (Array)
|
||||
-- >>> import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
@ -42,12 +42,12 @@ import Data.Word (Word8)
|
||||
import System.IO (stdin, stdout, stderr)
|
||||
import Prelude hiding (read)
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
|
||||
import Streamly.Internal.Data.Stream.Serial (SerialT)
|
||||
import Streamly.Internal.Data.Unfold (Unfold)
|
||||
import Streamly.Internal.Data.Fold (Fold)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
import qualified Streamly.Internal.FileSystem.Handle as Handle
|
||||
|
@ -64,7 +64,7 @@ import GHC.Exts (SpecConstrAnnotation(..))
|
||||
import GHC.Types (SPEC(..))
|
||||
import Prelude hiding (null, last, (!!), read, concat, unlines)
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Stream.Fold.Foreign (ArrayFold(..))
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Parser (ParseError(..))
|
||||
@ -72,16 +72,16 @@ import Streamly.Internal.Data.Stream.Serial (SerialT)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type
|
||||
(IsStream, fromStreamD, toStreamD)
|
||||
import Streamly.Internal.Data.SVar (adaptState, defState)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
(allocBytesToElemCount)
|
||||
import Streamly.Internal.Data.Tuple.Strict (Tuple'(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
-- import qualified Streamly.Internal.Data.Array.Stream.Fold.Foreign
|
||||
-- as ArrayFold
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Mut.Foreign as AS
|
||||
import qualified Streamly.Internal.Data.Fold.Type as FL
|
||||
import qualified Streamly.Internal.Data.Parser as PR
|
||||
|
@ -32,7 +32,7 @@ import Streamly.Internal.Data.Parser (Parser)
|
||||
import Streamly.Internal.Data.Maybe.Strict (Maybe'(..))
|
||||
import Streamly.Internal.Data.Tuple.Strict (Tuple' (..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Parser as PR
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as PRD
|
||||
|
||||
|
@ -71,7 +71,7 @@ import Control.Concurrent (threadDelay)
|
||||
import Control.Monad.IO.Class (MonadIO(..))
|
||||
import qualified Foreign.Storable as Storable (Storable)
|
||||
import Streamly.Internal.Control.Concurrent (MonadAsync)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold (..))
|
||||
import Streamly.Internal.Data.Stream.IsStream.Combinators (maxYields)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type
|
||||
@ -81,7 +81,7 @@ import Streamly.Internal.Data.Time.Units (AbsTime, RelTime64, addToAbsTime64)
|
||||
import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
import Streamly.Internal.Data.Unboxed (Storable, Unboxed)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Stream.Async as Async
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
|
||||
import qualified Streamly.Internal.Data.Stream.Parallel as Par
|
||||
@ -108,7 +108,7 @@ import Prelude hiding (take, takeWhile, drop, reverse, concatMap, map, zipWith)
|
||||
-- >>> import System.IO.Unsafe (unsafePerformIO)
|
||||
-- >>> import qualified Streamly.Prelude as Stream
|
||||
-- >>> import Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
-- >>> import qualified Streamly.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Data.Unfold as Unfold
|
||||
|
@ -167,7 +167,7 @@ import Streamly.Internal.Data.Stream.IsStream.Type
|
||||
import Streamly.Internal.Data.Stream.Serial (SerialT)
|
||||
import Streamly.Internal.Data.Unboxed (Unboxed)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
|
@ -194,7 +194,7 @@ import Prelude hiding (concat, concatMap, zipWith)
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
-- >>> import qualified Streamly.Internal.Data.Parser as Parser
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
-- >>> :{
|
||||
-- delay n = do
|
||||
-- threadDelay (n * 1000000) -- sleep for n seconds
|
||||
|
@ -163,7 +163,7 @@ import Streamly.Internal.Data.Fold.Type (Fold (..))
|
||||
import Streamly.Internal.Data.IsMap (IsMap(..))
|
||||
import Streamly.Internal.Data.Refold.Type (Refold (..))
|
||||
import Streamly.Internal.Data.Parser (Parser (..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Common
|
||||
( fold
|
||||
, interjectSuffix
|
||||
@ -182,7 +182,7 @@ import Streamly.Internal.Data.Unboxed (Storable, Unboxed)
|
||||
|
||||
import qualified Data.Heap as H
|
||||
import qualified Streamly.Data.Unfold as Unfold
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.IsMap as IsMap
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as PRD
|
||||
@ -202,7 +202,7 @@ import Prelude hiding (concatMap, map)
|
||||
-- >>> import qualified Streamly.Internal.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
-- >>> import qualified Streamly.Internal.Data.Parser as Parser
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- Trimming
|
||||
|
@ -68,7 +68,7 @@ import Streamly.Internal.Data.Time.Units (NanoSecond64(..), toRelTime64)
|
||||
import qualified Data.List as List
|
||||
import qualified Data.Map.Strict as Map
|
||||
import qualified Streamly.Internal.Data.Array as Array
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Parser as Parser
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream.Lift as Stream
|
||||
|
@ -63,7 +63,7 @@ import Prelude hiding (read)
|
||||
|
||||
-- import Streamly.Data.Fold (Fold)
|
||||
import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
-- import Streamly.Internal.Data.Array.Foreign.Type
|
||||
-- import Streamly.Internal.Data.Array.Unboxed.Type
|
||||
-- (Array(..), writeNUnsafe, defaultChunkSize, shrinkToFit,
|
||||
-- lpackArraysChunksOf)
|
||||
-- import Streamly.Internal.Data.Stream.Serial (SerialT)
|
||||
@ -75,7 +75,7 @@ import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
|
||||
import qualified Streamly.Internal.Data.Unfold as UF
|
||||
-- import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
-- import qualified Streamly.Data.Array.Foreign as A
|
||||
-- import qualified Streamly.Data.Array.Unboxed as A
|
||||
-- import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
|
||||
import qualified System.Directory as Dir
|
||||
|
||||
@ -165,9 +165,9 @@ toChunks = toChunksWithBufferOf defaultChunkSize
|
||||
|
||||
-- | Unfolds a handle into a stream of 'Word8' arrays. Requests to the IO
|
||||
-- device are performed using a buffer of size
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'. The
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'. The
|
||||
-- size of arrays in the resulting stream are therefore less than or equal to
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- @since 0.7.0
|
||||
{-# INLINE readChunks #-}
|
||||
@ -342,7 +342,7 @@ fromStreamWithBufferOf n h m = fromChunks h $ S.arraysOf n m
|
||||
-- > write = 'writeWithBufferOf' A.defaultChunkSize
|
||||
--
|
||||
-- | Write a byte stream to a file handle. Accumulates the input in chunks of
|
||||
-- up to 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize' before writing.
|
||||
-- up to 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize' before writing.
|
||||
--
|
||||
-- NOTE: This may perform better than the 'write' fold, you can try this if you
|
||||
-- need some extra perf boost.
|
||||
@ -392,7 +392,7 @@ writeWithBufferOf n h = FL.chunksOf n (writeNUnsafe n) (writeChunks h)
|
||||
-- > write = 'writeWithBufferOf' A.defaultChunkSize
|
||||
--
|
||||
-- | Write a byte stream to a file handle. Accumulates the input in chunks of
|
||||
-- up to 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize' before writing
|
||||
-- up to 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize' before writing
|
||||
-- to the IO device.
|
||||
--
|
||||
-- @since 0.7.0
|
||||
|
@ -47,7 +47,7 @@ where
|
||||
|
||||
import Data.List.NonEmpty (NonEmpty)
|
||||
import Data.Word (Word8)
|
||||
import Streamly.Internal.Data.Array.Foreign (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed (Array)
|
||||
import Streamly.Prelude (SerialT)
|
||||
|
||||
#if defined(CABAL_OS_DARWIN)
|
||||
|
@ -177,7 +177,7 @@ import GHC.IO.Handle.FD (fdToHandle)
|
||||
import Streamly.Prelude (SerialT)
|
||||
import Streamly.Internal.Data.Cont (contListMap)
|
||||
import Streamly.Internal.Data.Parser (Parser)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
|
||||
import System.IO (Handle, hClose)
|
||||
|
||||
import qualified Data.List.NonEmpty as NonEmpty
|
||||
@ -185,7 +185,7 @@ import qualified Streamly.Internal.Data.Parser as PR
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
import qualified Streamly.Internal.Unicode.Stream as U
|
||||
import qualified Streamly.Internal.FileSystem.Handle as FH
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Subscription to events
|
||||
|
@ -174,14 +174,14 @@ import GHC.IO.FD (fdFD, mkFD)
|
||||
import GHC.IO.Handle.FD (mkHandleFromFD)
|
||||
import Streamly.Prelude (SerialT)
|
||||
import Streamly.Internal.Data.Parser (Parser)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..), byteLength)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..), byteLength)
|
||||
import System.Directory (doesDirectoryExist)
|
||||
import System.IO (Handle, hClose, IOMode(ReadMode))
|
||||
import GHC.IO.Handle.FD (handleToFd)
|
||||
|
||||
import qualified Data.IntMap.Lazy as Map
|
||||
import qualified Data.List.NonEmpty as NonEmpty
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser as PR
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
|
@ -123,8 +123,8 @@ import qualified Data.List.NonEmpty as NonEmpty
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
import qualified Streamly.Internal.Unicode.Stream as U
|
||||
import qualified Streamly.Internal.Unicode.Utf8 as UTF8
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import Streamly.Internal.Data.Array.Foreign (Array)
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import Streamly.Internal.Data.Array.Unboxed (Array)
|
||||
|
||||
-- | Watch configuration, used to specify the events of interest and the
|
||||
-- behavior of the watch.
|
||||
|
@ -128,7 +128,7 @@ import Prelude hiding (read)
|
||||
import qualified GHC.IO.FD as FD
|
||||
import qualified GHC.IO.Device as RawIO
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign.Type
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type
|
||||
(Array(..), byteLength, unsafeFreeze, asPtrUnsafe)
|
||||
import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
@ -145,8 +145,8 @@ import qualified Streamly.Internal.System.IOVec.Type as RawIO
|
||||
-- import Streamly.Data.Fold (Fold)
|
||||
-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
|
||||
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MArray
|
||||
import qualified Streamly.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
import qualified Streamly.Prelude as S
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
|
||||
|
@ -97,14 +97,14 @@ import qualified System.IO as SIO
|
||||
import Streamly.Internal.Control.Concurrent (MonadAsync)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..), writeNUnsafe)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..), writeNUnsafe)
|
||||
import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
|
||||
-- import Streamly.Data.Fold (Fold)
|
||||
-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
|
||||
import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Fold.Type as FL
|
||||
import qualified Streamly.Internal.Data.Unfold as UF
|
||||
import qualified Streamly.Internal.FileSystem.Handle as FH
|
||||
@ -271,9 +271,9 @@ readChunksFromToWith = usingFile3 FH.readChunksFromToWith
|
||||
|
||||
-- | Unfolds a 'FilePath' into a stream of 'Word8' arrays. Requests to the IO
|
||||
-- device are performed using a buffer of size
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'. The
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'. The
|
||||
-- size of arrays in the resulting stream are therefore less than or equal to
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- /Pre-release/
|
||||
{-# INLINE readChunks #-}
|
||||
@ -290,7 +290,7 @@ readWith = usingFile2 FH.readWith
|
||||
|
||||
-- | Unfolds a file path into a byte stream. IO requests to the device are
|
||||
-- performed in sizes of
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- @since 0.7.0
|
||||
{-# INLINE read #-}
|
||||
@ -410,7 +410,7 @@ writeWith n path =
|
||||
-- > write = 'writeWith' A.defaultChunkSize
|
||||
--
|
||||
-- | Write a byte stream to a file. Accumulates the input in chunks of up to
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize' before writing to
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize' before writing to
|
||||
-- the IO device.
|
||||
--
|
||||
-- /Pre-release/
|
||||
|
@ -121,7 +121,7 @@ import Prelude hiding (read)
|
||||
import Streamly.Internal.Data.Fold (Fold)
|
||||
import Streamly.Internal.Data.Refold.Type (Refold(..))
|
||||
import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
import Streamly.Internal.Data.Array.Foreign.Type
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type
|
||||
(Array(..), writeNUnsafe, unsafeFreezeWithShrink, byteLength)
|
||||
import Streamly.Internal.Data.Stream.Type (Stream)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type
|
||||
@ -130,9 +130,9 @@ import Streamly.Internal.Data.Array.Stream.Foreign (lpackArraysChunksOf)
|
||||
-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
|
||||
import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
import qualified Streamly.Internal.Data.Refold.Type as Refold
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
@ -142,7 +142,7 @@ import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
|
||||
import qualified Streamly.Internal.Data.Unfold as UF
|
||||
|
||||
-- $setup
|
||||
-- >>> import qualified Streamly.Data.Array.Foreign as Array
|
||||
-- >>> import qualified Streamly.Data.Array.Unboxed as Array
|
||||
-- >>> import qualified Streamly.Data.Fold as Fold
|
||||
-- >>> import qualified Streamly.Data.Unfold as Unfold
|
||||
-- >>> import qualified Streamly.FileSystem.Handle as Handle
|
||||
@ -316,9 +316,9 @@ getChunks = getChunksWith defaultChunkSize
|
||||
|
||||
-- | Unfolds a handle into a stream of 'Word8' arrays. Requests to the IO
|
||||
-- device are performed using a buffer of size
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'. The
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'. The
|
||||
-- size of arrays in the resulting stream are therefore less than or equal to
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- >>> readChunks = Unfold.first IO.defaultChunkSize Handle.readChunksWith
|
||||
--
|
||||
@ -369,7 +369,7 @@ getBytesWith size h = AS.concat $ getChunksWith size h
|
||||
--
|
||||
-- | Unfolds a file handle into a byte stream. IO requests to the device are
|
||||
-- performed in sizes of
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- >>> read = Unfold.many Handle.readChunks Array.read
|
||||
--
|
||||
@ -456,7 +456,7 @@ putBytesWith n h m = putChunks h $ S.arraysOf n m
|
||||
-- putBytesWith n h m = putChunks h $ AS.arraysOf n m
|
||||
|
||||
-- | Write a byte stream to a file handle. Accumulates the input in chunks of
|
||||
-- up to 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize' before writing.
|
||||
-- up to 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize' before writing.
|
||||
--
|
||||
-- NOTE: This may perform better than the 'write' fold, you can try this if you
|
||||
-- need some extra perf boost.
|
||||
@ -559,7 +559,7 @@ consumerWith n =
|
||||
FL.refoldMany (FL.take n $ writeNUnsafe n) consumeChunks
|
||||
|
||||
-- | Write a byte stream to a file handle. Accumulates the input in chunks of
|
||||
-- up to 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize' before writing
|
||||
-- up to 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize' before writing
|
||||
-- to the IO device.
|
||||
--
|
||||
-- >>> write = Handle.writeWith IO.defaultChunkSize
|
||||
|
@ -105,7 +105,7 @@ import Prelude hiding (read)
|
||||
|
||||
import Streamly.Internal.Control.Concurrent (MonadAsync)
|
||||
import Streamly.Internal.Control.ForkLifted (fork)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..), writeNUnsafe)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..), writeNUnsafe)
|
||||
import Streamly.Internal.Data.Fold.Type (Fold(..))
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
|
||||
import Streamly.Internal.Data.Stream.Serial (SerialT)
|
||||
@ -118,7 +118,7 @@ import qualified Control.Monad.Catch as MC
|
||||
import qualified Network.Socket as Net
|
||||
|
||||
import qualified Streamly.Internal.Data.Unfold as UF
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
import qualified Streamly.Internal.Data.Fold.Type as FL
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
|
@ -91,7 +91,7 @@ import Prelude hiding (read)
|
||||
import qualified Network.Socket as Net
|
||||
|
||||
import Streamly.Internal.Control.Concurrent (MonadAsync)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Stream.Foreign (lpackArraysChunksOf)
|
||||
import Streamly.Internal.Data.Fold (Fold)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type
|
||||
@ -101,9 +101,9 @@ import Streamly.Internal.Data.Unfold.Type (Unfold(..))
|
||||
-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
|
||||
import Streamly.Internal.System.IO (defaultChunkSize)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
@ -395,9 +395,9 @@ readChunksWithBufferOf = readChunksWith
|
||||
|
||||
-- | Unfolds a socket into a stream of 'Word8' arrays. Requests to the socket
|
||||
-- are performed using a buffer of size
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'. The
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'. The
|
||||
-- size of arrays in the resulting stream are therefore less than or equal to
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- @since 0.7.0
|
||||
{-# INLINE readChunks #-}
|
||||
@ -452,7 +452,7 @@ readWithBufferOf = readWith
|
||||
|
||||
-- | Unfolds a 'Socket' into a byte stream. IO requests to the socket are
|
||||
-- performed in sizes of
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'.
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'.
|
||||
--
|
||||
-- @since 0.7.0
|
||||
{-# INLINE read #-}
|
||||
|
@ -30,12 +30,12 @@ where
|
||||
import Control.Monad (when)
|
||||
import Control.Monad.IO.Class (MonadIO(..))
|
||||
import Foreign.Ptr (castPtr)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (length)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (length)
|
||||
import Streamly.Internal.Data.SVar.Type (adaptState)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (Array(..))
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (Array(..))
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
-}
|
||||
#endif
|
||||
@ -69,11 +69,11 @@ groupIOVecsOfMut n maxIOVLen (D.Stream step state) =
|
||||
step' gst (GatherInitial st) = do
|
||||
when (n <= 0) $
|
||||
-- XXX we can pass the module string from the higher level API
|
||||
error $ "Streamly.Internal.Data.Array.Foreign.Mut.Type.groupIOVecsOf: the size of "
|
||||
error $ "Streamly.Internal.Data.Array.Unboxed.Mut.Type.groupIOVecsOf: the size of "
|
||||
++ "groups [" ++ show n ++ "] must be a natural number"
|
||||
when (maxIOVLen <= 0) $
|
||||
-- XXX we can pass the module string from the higher level API
|
||||
error $ "Streamly.Internal.Data.Array.Foreign.Mut.Type.groupIOVecsOf: the number of "
|
||||
error $ "Streamly.Internal.Data.Array.Unboxed.Mut.Type.groupIOVecsOf: the number of "
|
||||
++ "IOVec entries [" ++ show n ++ "] must be a natural number"
|
||||
r <- step (adaptState gst) st
|
||||
case r of
|
||||
|
@ -20,11 +20,13 @@ where
|
||||
import Control.Monad.IO.Class (MonadIO)
|
||||
import Streamly.Prelude (MonadAsync)
|
||||
import Prelude hiding (String, lines, words, unlines, unwords)
|
||||
import Streamly.Data.Array.Foreign (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed (Array)
|
||||
import Streamly.Internal.Data.Stream.IsStream (IsStream)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
(write, read)
|
||||
|
||||
import qualified Streamly.Internal.Unicode.Stream as S
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
|
||||
-- $setup
|
||||
-- >>> :m
|
||||
|
@ -97,8 +97,8 @@ import GHC.Base (assert, unsafeChr)
|
||||
import GHC.IO.Encoding.Failure (isSurrogate)
|
||||
import GHC.Ptr (Ptr (..), plusPtr)
|
||||
import System.IO.Unsafe (unsafePerformIO)
|
||||
import Streamly.Internal.Data.Array.Foreign (Array)
|
||||
import Streamly.Internal.Data.Array.Foreign.Mut.Type (ArrayContents)
|
||||
import Streamly.Internal.Data.Array.Unboxed (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Mut.Type (ArrayContents)
|
||||
import Streamly.Internal.Data.Fold (Fold)
|
||||
import Streamly.Internal.Data.Stream.IsStream.Type
|
||||
(IsStream, fromStreamD, toStreamD, adapt)
|
||||
@ -115,8 +115,8 @@ import qualified Streamly.Internal.Data.Unfold as Unfold
|
||||
import qualified Streamly.Internal.Data.Parser as Parser
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as ParserD
|
||||
import qualified Streamly.Internal.Data.Stream.Serial as Serial
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
import qualified Streamly.Internal.Data.Stream.StreamD as D
|
||||
|
||||
|
@ -24,10 +24,10 @@ where
|
||||
|
||||
import Control.DeepSeq (NFData)
|
||||
import Data.Word (Word8)
|
||||
import Streamly.Internal.Data.Array.Foreign.Type (Array)
|
||||
import Streamly.Internal.Data.Array.Unboxed.Type (Array)
|
||||
import System.IO.Unsafe (unsafePerformIO)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
import qualified Streamly.Internal.Unicode.Stream as Unicode
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
--
|
||||
-- > import qualified Streamly.Array as A
|
||||
--
|
||||
-- For experimental APIs see "Streamly.Internal.Data.Array.Foreign".
|
||||
-- For experimental APIs see "Streamly.Internal.Data.Array.Unboxed".
|
||||
|
||||
module Streamly.Memory.Array
|
||||
{-# DEPRECATED "Use Streamly.Data.Array.Foreign instead" #-}
|
||||
@ -71,4 +71,4 @@ module Streamly.Memory.Array
|
||||
)
|
||||
where
|
||||
|
||||
import Streamly.Internal.Data.Array.Foreign as A
|
||||
import Streamly.Internal.Data.Array.Unboxed as A
|
||||
|
@ -63,9 +63,9 @@
|
||||
-- = Programmer Notes
|
||||
--
|
||||
-- Read IO requests to connected stream sockets are performed in chunks of
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize'. Unless
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize'. Unless
|
||||
-- specified otherwise in the API, writes are collected into chunks of
|
||||
-- 'Streamly.Internal.Data.Array.Foreign.Type.defaultChunkSize' before they are
|
||||
-- 'Streamly.Internal.Data.Array.Unboxed.Type.defaultChunkSize' before they are
|
||||
-- written to the socket. APIs are provided to control the chunking behavior.
|
||||
--
|
||||
-- > import qualified Streamly.Network.Socket as Socket
|
||||
|
@ -165,9 +165,9 @@ extra-source-files:
|
||||
core/src/Streamly/Internal/Data/Pipe/Type.hs
|
||||
core/src/Streamly/Internal/Data/Unboxed.hs
|
||||
core/src/Streamly/Internal/Data/IORef/Unboxed.hs
|
||||
core/src/Streamly/Internal/Data/Array/Foreign/Mut/Type.hs
|
||||
core/src/Streamly/Internal/Data/Array/Foreign/Mut.hs
|
||||
core/src/Streamly/Internal/Data/Array/Foreign/Type.hs
|
||||
core/src/Streamly/Internal/Data/Array/Unboxed/Mut/Type.hs
|
||||
core/src/Streamly/Internal/Data/Array/Unboxed/Mut.hs
|
||||
core/src/Streamly/Internal/Data/Array/Unboxed/Type.hs
|
||||
core/src/Streamly/Internal/Data/Array/Mut/Type.hs
|
||||
core/src/Streamly/Internal/Data/Stream/StreamD/Generate.hs
|
||||
core/src/Streamly/Internal/Data/Stream/StreamD/Eliminate.hs
|
||||
@ -203,7 +203,7 @@ extra-source-files:
|
||||
core/src/Streamly/Internal/Data/Stream/Zip.hs
|
||||
core/src/Streamly/Internal/Data/List.hs
|
||||
core/src/Streamly/Internal/Data/Array.hs
|
||||
core/src/Streamly/Internal/Data/Array/Foreign.hs
|
||||
core/src/Streamly/Internal/Data/Array/Unboxed.hs
|
||||
core/src/Streamly/Internal/Data/Array/Stream/Mut/Foreign.hs
|
||||
core/src/Streamly/Internal/Data/Array/Stream/Fold/Foreign.hs
|
||||
core/src/Streamly/Internal/Data/Ring/Foreign.hs
|
||||
@ -212,7 +212,7 @@ extra-source-files:
|
||||
core/src/Streamly/Data/Fold.hs
|
||||
core/src/Streamly/Data/Fold/Tee.hs
|
||||
core/src/Streamly/Internal/Data/Fold/Window.hs
|
||||
core/src/Streamly/Data/Array/Foreign.hs
|
||||
core/src/Streamly/Data/Array/Unboxed.hs
|
||||
core/src/Streamly/Internal/Data/Time/Clock/Darwin.c
|
||||
core/src/Streamly/Internal/Data/Time/Clock/Windows.c
|
||||
core/streamly-core.cabal
|
||||
@ -519,6 +519,7 @@ library
|
||||
, Streamly
|
||||
, Streamly.Data.Unicode.Stream
|
||||
, Streamly.Memory.Array
|
||||
, Streamly.Data.Array.Foreign
|
||||
|
||||
reexported-modules:
|
||||
-- Re-exported modules, listed in the order described in
|
||||
@ -572,9 +573,9 @@ library
|
||||
-- Unboxed IORef
|
||||
, Streamly.Internal.Data.IORef.Unboxed
|
||||
-- May depend on streamly-core-stream
|
||||
, Streamly.Internal.Data.Array.Foreign.Mut.Type
|
||||
, Streamly.Internal.Data.Array.Foreign.Mut
|
||||
, Streamly.Internal.Data.Array.Foreign.Type
|
||||
, Streamly.Internal.Data.Array.Unboxed.Mut.Type
|
||||
, Streamly.Internal.Data.Array.Unboxed.Mut
|
||||
, Streamly.Internal.Data.Array.Unboxed.Type
|
||||
, Streamly.Internal.Data.Array.Mut.Type
|
||||
|
||||
-- streamly-core-streams
|
||||
@ -617,7 +618,7 @@ library
|
||||
-- streamly-core-data-arrays
|
||||
-- XXX Depends on primitive
|
||||
, Streamly.Internal.Data.Array
|
||||
, Streamly.Internal.Data.Array.Foreign
|
||||
, Streamly.Internal.Data.Array.Unboxed
|
||||
, Streamly.Internal.Data.Array.Stream.Mut.Foreign
|
||||
, Streamly.Internal.Data.Array.Stream.Fold.Foreign
|
||||
|
||||
@ -632,7 +633,7 @@ library
|
||||
-- streamly-core exposed modules
|
||||
, Streamly.Data.Fold
|
||||
, Streamly.Data.Fold.Tee
|
||||
, Streamly.Data.Array.Foreign
|
||||
, Streamly.Data.Array.Unboxed
|
||||
|
||||
other-modules:
|
||||
Streamly.Data.Array
|
||||
|
@ -19,9 +19,9 @@ import Test.QuickCheck (chooseInt, listOf)
|
||||
import GHC.Ptr (plusPtr)
|
||||
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
|
||||
type Array = A.Array
|
||||
|
@ -7,7 +7,7 @@ import Test.Hspec.QuickCheck
|
||||
import Test.QuickCheck (forAll, Property, vectorOf, Gen)
|
||||
import Test.QuickCheck.Monadic (monadicIO, run)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as ArrayStream
|
||||
import qualified Streamly.Internal.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.Data.Parser as Parser
|
||||
|
@ -25,7 +25,7 @@ import qualified Data.Map
|
||||
import qualified Prelude
|
||||
import qualified Streamly.Internal.Data.Fold as F
|
||||
import qualified Streamly.Prelude as S
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
import qualified Streamly.Data.Fold as FL
|
||||
|
||||
|
@ -15,7 +15,7 @@ import Prelude hiding (sequence)
|
||||
|
||||
import qualified Data.List as List
|
||||
import qualified Prelude
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser as P
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as S
|
||||
|
@ -12,7 +12,7 @@ import Test.QuickCheck.Monadic (monadicIO, assert, run)
|
||||
|
||||
import qualified Data.List as List
|
||||
import qualified Prelude
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as A
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Parser.ParserD as P
|
||||
import qualified Streamly.Internal.Data.Producer.Source as Source
|
||||
|
@ -10,7 +10,7 @@ module Streamly.Test.Data.Ring.Unboxed (main) where
|
||||
|
||||
import Control.Monad (void)
|
||||
|
||||
import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed.Type as Array
|
||||
import qualified Streamly.Internal.Data.Ring.Foreign as Ring
|
||||
|
||||
import Prelude as P
|
||||
|
@ -46,7 +46,7 @@ import Data.Function ((&))
|
||||
import Data.Functor.Identity (runIdentity)
|
||||
import Data.List.NonEmpty (NonEmpty)
|
||||
import Data.Word (Word8)
|
||||
import Streamly.Data.Array.Foreign (Array)
|
||||
import Streamly.Data.Array.Unboxed (Array)
|
||||
import System.Directory
|
||||
( createDirectory
|
||||
, createDirectoryIfMissing
|
||||
@ -63,7 +63,7 @@ import System.IO
|
||||
import System.IO.Temp (withSystemTempDirectory)
|
||||
|
||||
import qualified Data.List.NonEmpty as NonEmpty
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
import qualified Streamly.Unicode.Stream as Unicode
|
||||
|
||||
|
@ -29,7 +29,7 @@ import Test.QuickCheck.Monadic (monadicIO, assert, run)
|
||||
import qualified Streamly.Data.Fold as Fold
|
||||
import qualified Streamly.Internal.FileSystem.Handle as Handle
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as Stream
|
||||
import qualified Streamly.Internal.Data.Array.Foreign as Array
|
||||
import qualified Streamly.Internal.Data.Array.Unboxed as Array
|
||||
import qualified Streamly.Internal.Unicode.Stream as Unicode
|
||||
|
||||
import Test.Hspec as H
|
||||
|
@ -49,7 +49,7 @@ import qualified Streamly.Prelude as S
|
||||
import qualified Streamly.Internal.Data.Fold as FL
|
||||
import qualified Streamly.Internal.Data.Unfold as UF
|
||||
import qualified Streamly.Internal.Data.Stream.IsStream as IS
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
import qualified Streamly.Data.Array.Unboxed as A
|
||||
|
||||
import Streamly.Internal.Data.Time.Units
|
||||
(AbsTime, NanoSecond64(..), toRelTime64, diffAbsTime64)
|
||||
|
@ -16,7 +16,7 @@ import Test.QuickCheck
|
||||
)
|
||||
import Test.QuickCheck.Monadic (run, monadicIO, assert)
|
||||
|
||||
import qualified Streamly.Data.Array.Foreign as A
|
||||
import qualified Streamly.Data.Array.Unboxed as A
|
||||
import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
|
||||
import qualified Streamly.Prelude as S
|
||||
import qualified Streamly.Unicode.Stream as SS
|
||||
|
Loading…
Reference in New Issue
Block a user