@@ -79,10 +79,11 @@ module Data.Binary.Bits.Get
79 , byteString
79 , byteString
80 , Data.Binary.Bits.Get.getByteString
80 , Data.Binary.Bits.Get.getByteString
81 , Data.Binary.Bits.Get.getLazyByteString
81 , Data.Binary.Bits.Get.getLazyByteString
82+ , Data.Binary.Bits.Get.isEmpty
85−import Data.Binary.Get as B ( runGet, Get, getByteString, getLazyByteString )
86+import Data.Binary.Get as B ( runGet, Get, getByteString, getLazyByteString, isEmpty )
86import Data.Binary.Get.Internal as B ( get, put, ensureN )
87import Data.Binary.Get.Internal as B ( get, put, ensureN )
88import Data.ByteString as B
89import Data.ByteString as B
@@ -91,7 +92,6 @@ import Data.ByteString.Unsafe
92import Data.Bits
93import Data.Bits
93import Data.Word
94import Data.Word
95import Control.Applicative
95import Control.Applicative
97import Prelude as P
97import Prelude as P
@@ -427,6 +427,11 @@ getLazyByteString n = do
427 return (S B.empty 0, lbs)
427 return (S B.empty 0, lbs)
428 _ -> L.fromChunks . (:[]) <$> Data.Binary.Bits.Get.getByteString n
428 _ -> L.fromChunks . (:[]) <$> Data.Binary.Bits.Get.getByteString n
430+-- | Test whether all input has been consumed, i.e. there are no remaining
432+isEmpty :: BitGet Bool
433+isEmpty = B $ \ (S bs o) -> B.isEmpty >>= \e -> return (S bs o, e)
430-- | Read a 1 bit 'Bool'.
435-- | Read a 1 bit 'Bool'.
431bool :: Block Bool
436bool :: Block Bool
432bool = Block 1 readBool
437bool = Block 1 readBool