@@ -81,10 +81,11 @@ module Data.Binary.Bits.Get
8181
8282 ) where
8383
84−import Data.Binary.Get as B ( runGet, Get, getByteString )
84+import Data.Binary.Get as B ( runGet, Get, getByteString, getLazyByteString )
8585import Data.Binary.Get.Internal as B ( get, put, ensureN )
8686
8787import Data.ByteString as B
88+import qualified Data.ByteString.Lazy as L
8889import Data.ByteString.Unsafe
8990
9091import Data.Bits
@@ -414,6 +415,12 @@ getWord64be n = block (word64be n)
414415getByteString :: Int -> BitGet ByteString
415416getByteString n = block (byteString n)
416417
418+getLazyByteString :: Int -> BitGet L.ByteString
419+getLazyByteString m = B $ \ (S n bs) -> do
420+ putBackState n bs
421+ lbs <- B.getLazyByteString (fromIntegral m)
422+ return (S B.empty 0, lbs)
423+
417424-- | Read a 1 bit 'Bool'.
418425bool :: Block Bool
419426bool = Block 1 readBool