on master help sign in
Add getLazyByteString.
de2fe8eLennart Kolmodin
Data/Binary/Bits/Get.hs+8−1
@@ -81,10 +81,11 @@ module Data.Binary.Bits.Get
81
81
82 ) where
82 ) where
83
83
84−import Data.Binary.Get as B ( runGet, Get, getByteString )
84+import Data.Binary.Get as B ( runGet, Get, getByteString, getLazyByteString )
85import Data.Binary.Get.Internal as B ( get, put, ensureN )
85import Data.Binary.Get.Internal as B ( get, put, ensureN )
86
86
87import Data.ByteString as B
87import Data.ByteString as B
88+import qualified Data.ByteString.Lazy as L
88import Data.ByteString.Unsafe
89import Data.ByteString.Unsafe
89
90
90import Data.Bits
91import Data.Bits
@@ -414,6 +415,12 @@ getWord64be n = block (word64be n)
414getByteString :: Int -> BitGet ByteString
415getByteString :: Int -> BitGet ByteString
415getByteString n = block (byteString n)
416getByteString n = block (byteString n)
416
417
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+
417-- | Read a 1 bit 'Bool'.
424-- | Read a 1 bit 'Bool'.
418bool :: Block Bool
425bool :: Block Bool
419bool = Block 1 readBool
426bool = Block 1 readBool