clean up imports in Data.ByteArray.Builder
This commit is contained in:
parent
f62d5ebde8
commit
0538e31ae8
1 changed files with 12 additions and 12 deletions
|
@ -53,8 +53,8 @@ module Data.ByteArray.Builder
|
||||||
, doubleDec
|
, doubleDec
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Monad.Primitive
|
import Control.Monad.Primitive (primitive_)
|
||||||
import Control.Monad.ST
|
import Control.Monad.ST (ST,stToIO)
|
||||||
import Control.Monad.ST.Run (runByteArrayST)
|
import Control.Monad.ST.Run (runByteArrayST)
|
||||||
import Data.ByteArray.Builder.Unsafe (Builder(Builder))
|
import Data.ByteArray.Builder.Unsafe (Builder(Builder))
|
||||||
import Data.ByteArray.Builder.Unsafe (stringUtf8,cstring)
|
import Data.ByteArray.Builder.Unsafe (stringUtf8,cstring)
|
||||||
|
@ -62,12 +62,12 @@ import Data.ByteString.Short.Internal (ShortByteString(SBS))
|
||||||
import Data.Bytes.Types (Bytes(Bytes),MutableBytes(MutableBytes))
|
import Data.Bytes.Types (Bytes(Bytes),MutableBytes(MutableBytes))
|
||||||
import Data.Char (ord)
|
import Data.Char (ord)
|
||||||
import Data.Int (Int64,Int32,Int16,Int8)
|
import Data.Int (Int64,Int32,Int16,Int8)
|
||||||
import Data.Primitive
|
import Data.Primitive (ByteArray(..),MutableByteArray(..))
|
||||||
import Data.Primitive.ByteArray.Offset (MutableByteArrayOffset(..))
|
import Data.Primitive.ByteArray.Offset (MutableByteArrayOffset(..))
|
||||||
import Data.Text.Short (ShortText)
|
import Data.Text.Short (ShortText)
|
||||||
import GHC.Exts
|
import Data.Word (Word64,Word32,Word16,Word8)
|
||||||
|
import GHC.Exts (Int(I#),Char(C#),Int#,State#,ByteArray#,RealWorld,(>=#),(/=#))
|
||||||
import GHC.ST (ST(ST))
|
import GHC.ST (ST(ST))
|
||||||
import GHC.Word
|
|
||||||
|
|
||||||
import qualified Arithmetic.Nat as Nat
|
import qualified Arithmetic.Nat as Nat
|
||||||
import qualified Arithmetic.Types as Arithmetic
|
import qualified Arithmetic.Types as Arithmetic
|
||||||
|
@ -86,12 +86,12 @@ run ::
|
||||||
-> ByteArray
|
-> ByteArray
|
||||||
run hint b = runByteArrayST $ do
|
run hint b = runByteArrayST $ do
|
||||||
let go !n = do
|
let go !n = do
|
||||||
arr <- newByteArray n
|
arr <- PM.newByteArray n
|
||||||
pasteST b (MutableBytes arr 0 n) >>= \case
|
pasteST b (MutableBytes arr 0 n) >>= \case
|
||||||
Nothing -> go (n + 64)
|
Nothing -> go (n + 64)
|
||||||
Just len -> do
|
Just len -> do
|
||||||
shrinkMutableByteArray arr len
|
shrinkMutableByteArray arr len
|
||||||
unsafeFreezeByteArray arr
|
PM.unsafeFreezeByteArray arr
|
||||||
go (max hint 1)
|
go (max hint 1)
|
||||||
|
|
||||||
-- | Variant of 'pasteArrayST' that runs in 'IO'.
|
-- | Variant of 'pasteArrayST' that runs in 'IO'.
|
||||||
|
@ -157,7 +157,7 @@ pasteST :: Builder -> MutableBytes s -> ST s (Maybe Int)
|
||||||
{-# inline pasteST #-}
|
{-# inline pasteST #-}
|
||||||
pasteST (Builder f) (MutableBytes (MutableByteArray arr) (I# off) (I# len)) =
|
pasteST (Builder f) (MutableBytes (MutableByteArray arr) (I# off) (I# len)) =
|
||||||
ST $ \s0 -> case f arr off len s0 of
|
ST $ \s0 -> case f arr off len s0 of
|
||||||
(# s1, r #) -> if isTrue# (r /=# (-1#))
|
(# s1, r #) -> if Exts.isTrue# (r /=# (-1#))
|
||||||
then (# s1, Just (I# r) #)
|
then (# s1, Just (I# r) #)
|
||||||
else (# s1, Nothing #)
|
else (# s1, Nothing #)
|
||||||
|
|
||||||
|
@ -193,13 +193,13 @@ fromBounded n (UnsafeBounded.Builder f) = Builder $ \arr off len s0 ->
|
||||||
|
|
||||||
-- | Create a builder from an unsliced byte sequence.
|
-- | Create a builder from an unsliced byte sequence.
|
||||||
bytearray :: ByteArray -> Builder
|
bytearray :: ByteArray -> Builder
|
||||||
bytearray a = bytes (Bytes a 0 (sizeofByteArray a))
|
bytearray a = bytes (Bytes a 0 (PM.sizeofByteArray a))
|
||||||
|
|
||||||
-- | Create a builder from a sliced byte sequence.
|
-- | Create a builder from a sliced byte sequence.
|
||||||
bytes :: Bytes -> Builder
|
bytes :: Bytes -> Builder
|
||||||
bytes (Bytes src soff slen) = construct $ \(MutableBytes arr off len) -> if len >= slen
|
bytes (Bytes src soff slen) = construct $ \(MutableBytes arr off len) -> if len >= slen
|
||||||
then do
|
then do
|
||||||
copyByteArray arr off src soff slen
|
PM.copyByteArray arr off src soff slen
|
||||||
pure (Just (off + slen))
|
pure (Just (off + slen))
|
||||||
else pure Nothing
|
else pure Nothing
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ write2 marr ix a b = do
|
||||||
shortTextUtf8 :: ShortText -> Builder
|
shortTextUtf8 :: ShortText -> Builder
|
||||||
shortTextUtf8 a =
|
shortTextUtf8 a =
|
||||||
let ba = shortTextToByteArray a
|
let ba = shortTextToByteArray a
|
||||||
in bytes (Bytes ba 0 (sizeofByteArray ba))
|
in bytes (Bytes ba 0 (PM.sizeofByteArray ba))
|
||||||
|
|
||||||
-- | Create a builder from text. The text will be UTF-8 encoded,
|
-- | Create a builder from text. The text will be UTF-8 encoded,
|
||||||
-- and JSON special characters will be escaped. Additionally, the
|
-- and JSON special characters will be escaped. Additionally, the
|
||||||
|
@ -366,7 +366,7 @@ unST (ST f) = f
|
||||||
|
|
||||||
shrinkMutableByteArray :: MutableByteArray s -> Int -> ST s ()
|
shrinkMutableByteArray :: MutableByteArray s -> Int -> ST s ()
|
||||||
shrinkMutableByteArray (MutableByteArray arr) (I# sz) =
|
shrinkMutableByteArray (MutableByteArray arr) (I# sz) =
|
||||||
primitive_ (shrinkMutableByteArray# arr sz)
|
primitive_ (Exts.shrinkMutableByteArray# arr sz)
|
||||||
|
|
||||||
-- | Requires exactly 8 bytes. Dump the octets of a 64-bit
|
-- | Requires exactly 8 bytes. Dump the octets of a 64-bit
|
||||||
-- word in a big-endian fashion.
|
-- word in a big-endian fashion.
|
||||||
|
|
Loading…
Reference in a new issue