Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ binary
binary-0.9.0.0
--------------

- Add `Data.Binary.Get.getShortByteString`
- Don't reexport `Data.Word` from `Data.Binary`

binary-0.8.9.2
Expand Down
11 changes: 2 additions & 9 deletions src/Data/Binary/Builder.hs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ module Data.Binary.Builder (
, append
, fromByteString -- :: S.ByteString -> Builder
, fromLazyByteString -- :: L.ByteString -> Builder
#if MIN_VERSION_bytestring(0,10,4)
, fromShortByteString -- :: T.ByteString -> Builder
#endif
-- * Flushing the buffer state
, flush

Expand Down Expand Up @@ -66,12 +64,9 @@ module Data.Binary.Builder (
, putStringUtf8
) where

import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L

#if MIN_VERSION_bytestring(0,10,4)
import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Short as T
#endif

import qualified Data.ByteString.Builder as B
import qualified Data.ByteString.Builder.Extra as B
Expand Down Expand Up @@ -127,15 +122,13 @@ fromLazyByteString :: L.ByteString -> Builder
fromLazyByteString = B.lazyByteString
{-# INLINE fromLazyByteString #-}

#if MIN_VERSION_bytestring(0,10,4)
-- | /O(n)./ A builder taking 'T.ShortByteString' and copy it to a Builder,
-- satisfying
--
-- * @'toLazyByteString' ('fromShortByteString' bs) = 'L.fromChunks' ['T.fromShort' bs]
fromShortByteString :: T.ShortByteString -> Builder
fromShortByteString = B.shortByteString
{-# INLINE fromShortByteString #-}
#endif

------------------------------------------------------------------------

Expand Down
6 changes: 1 addition & 5 deletions src/Data/Binary/Class.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE Trustworthy #-}

Check warning on line 7 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (8.0.2)

‘Data.Binary.Class’ is marked as Trustworthy but has been inferred as safe!

Check warning on line 7 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (8.0.2)

‘Data.Binary.Class’ is marked as Trustworthy but has been inferred as safe!

#if MIN_VERSION_base(4,16,0)
#define HAS_TYPELITS_CHAR
Expand Down Expand Up @@ -89,9 +89,7 @@
import GHC.Exts (RuntimeRep(..), VecCount, VecElem)
#endif
import qualified Data.ByteString as B
#if MIN_VERSION_bytestring(0,10,4)
import qualified Data.ByteString.Short as BS
#endif
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Data.IntMap as IntMap
Expand Down Expand Up @@ -638,12 +636,10 @@
get = get >>= getLazyByteString


#if MIN_VERSION_bytestring(0,10,4)
instance Binary BS.ShortByteString where
put bs = put (BS.length bs)
<> putShortByteString bs
get = get >>= fmap BS.toShort . getByteString
#endif
get = get >>= getShortByteString

------------------------------------------------------------------------
-- Maps and Sets
Expand Down Expand Up @@ -824,9 +820,9 @@

#if __GLASGOW_HASKELL__ < 901
-- | @since 0.8.4.0
instance Binary a => Binary (Semigroup.Option a) where

Check warning on line 823 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

In the use of type constructor or class ‘Option’

Check warning on line 823 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

In the use of type constructor or class ‘Option’
get = fmap Semigroup.Option get

Check warning on line 824 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

In the use of data constructor ‘Option’

Check warning on line 824 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

In the use of data constructor ‘Option’
put = put . Semigroup.getOption

Check warning on line 825 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

In the use of ‘getOption’ (imported from Data.Semigroup):

Check warning on line 825 in src/Data/Binary/Class.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

In the use of ‘getOption’ (imported from Data.Semigroup):
#endif

-- | @since 0.8.4.0
Expand Down
5 changes: 5 additions & 0 deletions src/Data/Binary/Get.hs
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ module Data.Binary.Get (
, getLazyByteString
, getLazyByteStringNul
, getRemainingLazyByteString
, getShortByteString

-- ** Decoding Words
, getWord8
Expand Down Expand Up @@ -232,6 +233,7 @@ import qualified Data.ByteString as B
import qualified Data.ByteString.Unsafe as B
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Lazy.Internal as L
import Data.ByteString.Short (ShortByteString, toShort)

import Data.Binary.Get.Internal hiding ( Decoder(..), runGetIncremental )
import qualified Data.Binary.Get.Internal as I
Expand Down Expand Up @@ -432,6 +434,9 @@ getLazyByteStringNul = withInputChunks () consumeUntilNul L.fromChunks failOnEOF
getRemainingLazyByteString :: Get L.ByteString
getRemainingLazyByteString = withInputChunks () consumeAll L.fromChunks resumeOnEOF

getShortByteString :: Int -> Get ShortByteString
getShortByteString = fmap toShort . getByteString

------------------------------------------------------------------------
-- Primitives

Expand Down
6 changes: 0 additions & 6 deletions src/Data/Binary/Put.hs
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,7 @@ module Data.Binary.Put (
, putInt8
, putByteString
, putLazyByteString
#if MIN_VERSION_bytestring(0,10,4)
, putShortByteString
#endif

-- * Big-endian primitives
, putWord16be
Expand Down Expand Up @@ -88,9 +86,7 @@ import Data.Int
import Data.Word
import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
#if MIN_VERSION_bytestring(0,10,4)
import Data.ByteString.Short
#endif

#ifdef HAS_SEMIGROUP
import Data.Semigroup
Expand Down Expand Up @@ -226,12 +222,10 @@ putLazyByteString :: L.ByteString -> Put
putLazyByteString = tell . B.fromLazyByteString
{-# INLINE putLazyByteString #-}

#if MIN_VERSION_bytestring(0,10,4)
-- | Write 'ShortByteString' to the buffer
putShortByteString :: ShortByteString -> Put
putShortByteString = tell . B.fromShortByteString
{-# INLINE putShortByteString #-}
#endif

-- | Write a Word16 in big endian format
putWord16be :: Word16 -> Put
Expand Down
4 changes: 0 additions & 4 deletions tests/Arbitrary.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,13 @@ import Test.QuickCheck

import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
#if MIN_VERSION_bytestring(0,10,4)
import qualified Data.ByteString.Short as S
#endif

instance Arbitrary L.ByteString where
arbitrary = fmap L.fromChunks arbitrary

instance Arbitrary B.ByteString where
arbitrary = B.pack `fmap` arbitrary

#if MIN_VERSION_bytestring(0,10,4)
instance Arbitrary S.ShortByteString where
arbitrary = S.toShort `fmap` arbitrary
#endif
6 changes: 0 additions & 6 deletions tests/QC.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Lazy.Internal as L
#if MIN_VERSION_bytestring(0,10,4)
import Data.ByteString.Short (ShortByteString)
#endif
import Data.Int
import Data.Ratio
import Data.Typeable

Check warning on line 22 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (8.0.2)

The import of ‘Data.Typeable’ is redundant

Check warning on line 22 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (8.2.2)

The import of ‘Data.Typeable’ is redundant
import Data.Word
import System.IO.Unsafe

Expand Down Expand Up @@ -182,7 +180,7 @@
, typeRep (Proxy :: Proxy (() -> ()))
]

instance Arbitrary TypeRep where

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (8.6.5)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (8.8.4)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.6.7)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.4.8)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.12.2)

Orphan class instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (8.10.7)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.10.3)

Orphan class instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (8.4.4)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.14.1)

Orphan class instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.2.8)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.0.2)

Orphan instance: instance Arbitrary TypeRep

Check warning on line 183 in tests/QC.hs

View workflow job for this annotation

GitHub Actions / build (9.8.4)

Orphan class instance: instance Arbitrary TypeRep
arbitrary = elements atomicTypeReps
#else
testTypeable :: Test
Expand Down Expand Up @@ -716,20 +714,16 @@

, test' "B.ByteString" (test :: T B.ByteString) test
, test' "L.ByteString" (test :: T L.ByteString) test
#if MIN_VERSION_bytestring(0,10,4)
, test' "ShortByteString" (test :: T ShortByteString) test
#endif
]

, testGroup "Invariants" $ map (uncurry testProperty)
[ ("B.ByteString invariant", p (prop_invariant :: B B.ByteString ))
, ("[B.ByteString] invariant", p (prop_invariant :: B [B.ByteString] ))
, ("L.ByteString invariant", p (prop_invariant :: B L.ByteString ))
, ("[L.ByteString] invariant", p (prop_invariant :: B [L.ByteString] ))
#if MIN_VERSION_bytestring(0,10,4)
, ("ShortByteString invariant", p (prop_invariant :: B ShortByteString ))
, ("[ShortByteString] invariant", p (prop_invariant :: B [ShortByteString] ))
#endif
]
#ifdef HAS_FIXED_CONSTRUCTOR
, testGroup "Fixed"
Expand Down
Loading