Skip to content

Commit 2e2e5ca

Browse files
authored
Remove Data.ByteString.Short.Internal.BA (#615)
1 parent f5c5c51 commit 2e2e5ca

File tree

1 file changed

+35
-43
lines changed

1 file changed

+35
-43
lines changed

Data/ByteString/Short/Internal.hs

Lines changed: 35 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,8 @@ indexError sbs i =
386386
------------------------------------------------------------------------
387387
-- Internal utils
388388

389-
asBA :: ShortByteString -> BA
390-
asBA (unSBS -> ba#) = BA# ba#
389+
asBA :: ShortByteString -> ByteArray
390+
asBA (ShortByteString ba) = ba
391391

392392
unSBS :: ShortByteString -> ByteArray#
393393
unSBS (ShortByteString (ByteArray ba#)) = ba#
@@ -397,8 +397,7 @@ create len fill =
397397
assert (len >= 0) $ runST $ do
398398
mba <- newByteArray len
399399
fill mba
400-
BA# ba# <- unsafeFreezeByteArray mba
401-
return (SBS ba#)
400+
ShortByteString <$> unsafeFreezeByteArray mba
402401
{-# INLINE create #-}
403402

404403
-- | Given the maximum size needed and a function to make the contents
@@ -413,13 +412,13 @@ createAndTrim maxLen fill =
413412
(len, res) <- fill mba
414413
if assert (0 <= len && len <= maxLen) $ len >= maxLen
415414
then do
416-
BA# ba# <- unsafeFreezeByteArray mba
417-
return (SBS ba#, res)
415+
ba <- unsafeFreezeByteArray mba
416+
return (ShortByteString ba, res)
418417
else do
419418
mba2 <- newByteArray len
420419
copyMutableByteArray mba 0 mba2 0 len
421-
BA# ba# <- unsafeFreezeByteArray mba2
422-
return (SBS ba#, res)
420+
ba <- unsafeFreezeByteArray mba2
421+
return (ShortByteString ba, res)
423422
{-# INLINE createAndTrim #-}
424423

425424
createAndTrim' :: Int -> (forall s. MBA s -> ST s Int) -> ShortByteString
@@ -429,13 +428,11 @@ createAndTrim' maxLen fill =
429428
len <- fill mba
430429
if assert (0 <= len && len <= maxLen) $ len >= maxLen
431430
then do
432-
BA# ba# <- unsafeFreezeByteArray mba
433-
return (SBS ba#)
431+
ShortByteString <$> unsafeFreezeByteArray mba
434432
else do
435433
mba2 <- newByteArray len
436434
copyMutableByteArray mba 0 mba2 0 len
437-
BA# ba# <- unsafeFreezeByteArray mba2
438-
return (SBS ba#)
435+
ShortByteString <$> unsafeFreezeByteArray mba2
439436
{-# INLINE createAndTrim' #-}
440437

441438
-- | Like createAndTrim, but with two buffers at once
@@ -453,13 +450,11 @@ createAndTrim2 maxLen1 maxLen2 fill =
453450
freeze' len maxLen mba =
454451
if assert (0 <= len && len <= maxLen) $ len >= maxLen
455452
then do
456-
BA# ba# <- unsafeFreezeByteArray mba
457-
return (SBS ba#)
453+
ShortByteString <$> unsafeFreezeByteArray mba
458454
else do
459455
mba2 <- newByteArray len
460456
copyMutableByteArray mba 0 mba2 0 len
461-
BA# ba# <- unsafeFreezeByteArray mba2
462-
return (SBS ba#)
457+
ShortByteString <$> unsafeFreezeByteArray mba2
463458
{-# INLINE createAndTrim2 #-}
464459

465460
isPinned :: ByteArray# -> Bool
@@ -485,8 +480,7 @@ toShortIO (BS fptr len) = do
485480
let ptr = unsafeForeignPtrToPtr fptr
486481
stToIO (copyAddrToByteArray ptr mba 0 len)
487482
touchForeignPtr fptr
488-
BA# ba# <- stToIO (unsafeFreezeByteArray mba)
489-
return (SBS ba#)
483+
ShortByteString <$> stToIO (unsafeFreezeByteArray mba)
490484

491485
-- | /O(n)/. Convert a 'ShortByteString' into a 'ByteString'.
492486
--
@@ -783,7 +777,7 @@ map f = \sbs ->
783777
ba = asBA sbs
784778
in create l (\mba -> go ba mba 0 l)
785779
where
786-
go :: BA -> MBA s -> Int -> Int -> ST s ()
780+
go :: ByteArray -> MBA s -> Int -> Int -> ST s ()
787781
go !ba !mba !i !l
788782
| i >= l = return ()
789783
| otherwise = do
@@ -802,7 +796,7 @@ reverse = \sbs ->
802796
#if HS_UNALIGNED_ByteArray_OPS_OK
803797
in create l (\mba -> go ba mba l)
804798
where
805-
go :: forall s. BA -> MBA s -> Int -> ST s ()
799+
go :: forall s. ByteArray -> MBA s -> Int -> ST s ()
806800
go !ba !mba !l = do
807801
-- this is equivalent to: (q, r) = l `quotRem` 8
808802
let q = l `shiftR` 3
@@ -835,7 +829,7 @@ reverse = \sbs ->
835829
#else
836830
in create l (\mba -> go ba mba 0 l)
837831
where
838-
go :: BA -> MBA s -> Int -> Int -> ST s ()
832+
go :: ByteArray -> MBA s -> Int -> Int -> ST s ()
839833
go !ba !mba !i !l
840834
| i >= l = return ()
841835
| otherwise = do
@@ -1437,7 +1431,7 @@ filter k = \sbs -> let l = length sbs
14371431
| otherwise -> createAndTrim' l $ \mba -> go mba (asBA sbs) l
14381432
where
14391433
go :: forall s. MBA s -- mutable output bytestring
1440-
-> BA -- input bytestring
1434+
-> ByteArray -- input bytestring
14411435
-> Int -- length of input bytestring
14421436
-> ST s Int
14431437
go !mba ba !l = go' 0 0
@@ -1485,7 +1479,7 @@ partition k = \sbs -> let len = length sbs
14851479
go :: forall s.
14861480
MBA s -- mutable output bytestring1
14871481
-> MBA s -- mutable output bytestring2
1488-
-> BA -- input bytestring
1482+
-> ByteArray -- input bytestring
14891483
-> Int -- length of input bytestring
14901484
-> ST s (Int, Int) -- (length mba1, length mba2)
14911485
go !mba1 !mba2 ba !l = go' 0 0
@@ -1586,25 +1580,23 @@ createFromPtr !ptr len =
15861580
stToIO $ do
15871581
mba <- newByteArray len
15881582
copyAddrToByteArray ptr mba 0 len
1589-
BA# ba# <- unsafeFreezeByteArray mba
1590-
return (SBS ba#)
1583+
ShortByteString <$> unsafeFreezeByteArray mba
15911584

15921585

15931586
------------------------------------------------------------------------
15941587
-- Primop wrappers
15951588

1596-
data BA = BA# ByteArray#
15971589
data MBA s = MBA# (MutableByteArray# s)
15981590

1599-
indexCharArray :: BA -> Int -> Char
1600-
indexCharArray (BA# ba#) (I# i#) = C# (indexCharArray# ba# i#)
1591+
indexCharArray :: ByteArray -> Int -> Char
1592+
indexCharArray (ByteArray ba#) (I# i#) = C# (indexCharArray# ba# i#)
16011593

1602-
indexWord8Array :: BA -> Int -> Word8
1603-
indexWord8Array (BA# ba#) (I# i#) = W8# (indexWord8Array# ba# i#)
1594+
indexWord8Array :: ByteArray -> Int -> Word8
1595+
indexWord8Array (ByteArray ba#) (I# i#) = W8# (indexWord8Array# ba# i#)
16041596

16051597
#if HS_UNALIGNED_ByteArray_OPS_OK
1606-
indexWord8ArrayAsWord64 :: BA -> Int -> Word64
1607-
indexWord8ArrayAsWord64 (BA# ba#) (I# i#) = W64# (indexWord8ArrayAsWord64# ba# i#)
1598+
indexWord8ArrayAsWord64 :: ByteArray -> Int -> Word64
1599+
indexWord8ArrayAsWord64 (ByteArray ba#) (I# i#) = W64# (indexWord8ArrayAsWord64# ba# i#)
16081600
#endif
16091601

16101602
newByteArray :: Int -> ST s (MBA s)
@@ -1619,10 +1611,10 @@ newPinnedByteArray len@(I# len#) =
16191611
ST $ \s -> case newPinnedByteArray# len# s of
16201612
(# s', mba# #) -> (# s', MBA# mba# #)
16211613

1622-
unsafeFreezeByteArray :: MBA s -> ST s BA
1614+
unsafeFreezeByteArray :: MBA s -> ST s ByteArray
16231615
unsafeFreezeByteArray (MBA# mba#) =
16241616
ST $ \s -> case unsafeFreezeByteArray# mba# s of
1625-
(# s', ba# #) -> (# s', BA# ba# #)
1617+
(# s', ba# #) -> (# s', ByteArray ba# #)
16261618

16271619
writeWord8Array :: MBA s -> Int -> Word8 -> ST s ()
16281620
writeWord8Array (MBA# mba#) (I# i#) (W8# w#) =
@@ -1641,13 +1633,13 @@ copyAddrToByteArray (Ptr src#) (MBA# dst#) (I# dst_off#) (I# len#) =
16411633
ST $ \s -> case copyAddrToByteArray# src# dst# dst_off# len# s of
16421634
s' -> (# s', () #)
16431635

1644-
copyByteArrayToAddr :: BA -> Int -> Ptr a -> Int -> ST RealWorld ()
1645-
copyByteArrayToAddr (BA# src#) (I# src_off#) (Ptr dst#) (I# len#) =
1636+
copyByteArrayToAddr :: ByteArray -> Int -> Ptr a -> Int -> ST RealWorld ()
1637+
copyByteArrayToAddr (ByteArray src#) (I# src_off#) (Ptr dst#) (I# len#) =
16461638
ST $ \s -> case copyByteArrayToAddr# src# src_off# dst# len# s of
16471639
s' -> (# s', () #)
16481640

1649-
copyByteArray :: BA -> Int -> MBA s -> Int -> Int -> ST s ()
1650-
copyByteArray (BA# src#) (I# src_off#) (MBA# dst#) (I# dst_off#) (I# len#) =
1641+
copyByteArray :: ByteArray -> Int -> MBA s -> Int -> Int -> ST s ()
1642+
copyByteArray (ByteArray src#) (I# src_off#) (MBA# dst#) (I# dst_off#) (I# len#) =
16511643
ST $ \s -> case copyByteArray# src# src_off# dst# dst_off# len# s of
16521644
s' -> (# s', () #)
16531645

@@ -1665,20 +1657,20 @@ copyMutableByteArray (MBA# src#) (I# src_off#) (MBA# dst#) (I# dst_off#) (I# len
16651657
------------------------------------------------------------------------
16661658
-- FFI imports
16671659
--
1668-
compareByteArrays :: BA -> BA -> Int -> Int
1660+
compareByteArrays :: ByteArray -> ByteArray -> Int -> Int
16691661
compareByteArrays ba1 ba2 = compareByteArraysOff ba1 0 ba2 0
16701662

1671-
compareByteArraysOff :: BA -- ^ array 1
1663+
compareByteArraysOff :: ByteArray -- ^ array 1
16721664
-> Int -- ^ offset for array 1
1673-
-> BA -- ^ array 2
1665+
-> ByteArray -- ^ array 2
16741666
-> Int -- ^ offset for array 2
16751667
-> Int -- ^ length to compare
16761668
-> Int -- ^ like memcmp
16771669
#if MIN_VERSION_base(4,11,0)
1678-
compareByteArraysOff (BA# ba1#) (I# ba1off#) (BA# ba2#) (I# ba2off#) (I# len#) =
1670+
compareByteArraysOff (ByteArray ba1#) (I# ba1off#) (ByteArray ba2#) (I# ba2off#) (I# len#) =
16791671
I# (compareByteArrays# ba1# ba1off# ba2# ba2off# len#)
16801672
#else
1681-
compareByteArraysOff (BA# ba1#) ba1off (BA# ba2#) ba2off len =
1673+
compareByteArraysOff (ByteArray ba1#) ba1off (ByteArray ba2#) ba2off len =
16821674
assert (ba1off + len <= (I# (sizeofByteArray# ba1#)))
16831675
$ assert (ba2off + len <= (I# (sizeofByteArray# ba2#)))
16841676
$ fromIntegral $ accursedUnutterablePerformIO $

0 commit comments

Comments
 (0)