summaryrefslogtreecommitdiff
path: root/testsuite/tests/codeGen/should_run/T15038/src/Packed/Bytes/Stream/ST.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/codeGen/should_run/T15038/src/Packed/Bytes/Stream/ST.hs')
-rw-r--r--testsuite/tests/codeGen/should_run/T15038/src/Packed/Bytes/Stream/ST.hs61
1 files changed, 0 insertions, 61 deletions
diff --git a/testsuite/tests/codeGen/should_run/T15038/src/Packed/Bytes/Stream/ST.hs b/testsuite/tests/codeGen/should_run/T15038/src/Packed/Bytes/Stream/ST.hs
deleted file mode 100644
index ffba9c2596..0000000000
--- a/testsuite/tests/codeGen/should_run/T15038/src/Packed/Bytes/Stream/ST.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE BangPatterns #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE MagicHash #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE UnboxedTuples #-}
-{-# LANGUAGE UnboxedSums #-}
-
-{-# OPTIONS_GHC -O2 #-}
-
-module Packed.Bytes.Stream.ST
- ( ByteStream(..)
- , empty
- , unpack
- , fromBytes
- ) where
-
-import Data.Primitive (Array,ByteArray(..))
-import Data.Semigroup (Semigroup)
-import Data.Word (Word8)
-import GHC.Exts (RealWorld,State#,Int#,ByteArray#)
-import GHC.Int (Int(I#))
-import GHC.ST (ST(..))
-import Packed.Bytes (Bytes(..))
-import System.IO (Handle)
-import qualified Data.Primitive as PM
-import qualified Data.Semigroup as SG
-import qualified Packed.Bytes as B
-
-type Bytes# = (# ByteArray#, Int#, Int# #)
-
-newtype ByteStream s = ByteStream
- (State# s -> (# State# s, (# (# #) | (# Bytes# , ByteStream s #) #) #) )
-
-fromBytes :: Bytes -> ByteStream s
-fromBytes b = ByteStream
- (\s0 -> (# s0, (# | (# unboxBytes b, empty #) #) #))
-
-nextChunk :: ByteStream s -> ST s (Maybe (Bytes,ByteStream s))
-nextChunk (ByteStream f) = ST $ \s0 -> case f s0 of
- (# s1, r #) -> case r of
- (# (# #) | #) -> (# s1, Nothing #)
- (# | (# theBytes, theStream #) #) -> (# s1, Just (boxBytes theBytes, theStream) #)
-
-empty :: ByteStream s
-empty = ByteStream (\s -> (# s, (# (# #) | #) #) )
-
-boxBytes :: Bytes# -> Bytes
-boxBytes (# a, b, c #) = Bytes (ByteArray a) (I# b) (I# c)
-
-unboxBytes :: Bytes -> Bytes#
-unboxBytes (Bytes (ByteArray a) (I# b) (I# c)) = (# a,b,c #)
-
-unpack :: ByteStream s -> ST s [Word8]
-unpack stream = ST (unpackInternal stream)
-
-unpackInternal :: ByteStream s -> State# s -> (# State# s, [Word8] #)
-unpackInternal (ByteStream f) s0 = case f s0 of
- (# s1, r #) -> case r of
- (# (# #) | #) -> (# s1, [] #)
- (# | (# bytes, stream #) #) -> case unpackInternal stream s1 of
- (# s2, ws #) -> (# s2, B.unpack (boxBytes bytes) ++ ws #)