@@ -7,6 +7,7 @@ module BitsPut
77 , putWord8
88 , putWord16be
99 , putWord32be
10+ , putWord64be
1011 )
1112 where
1213
@@ -75,7 +76,10 @@ putWord32be n w
7576
7677putWord64be :: Int -> Word64 -> BitPut ()
7778putWord64be n w
78− | n <= 16 = putWord16be n (fromIntegral w)
79+ | n <= 32 = putWord32be n (fromIntegral w)
80+ | otherwise = do
81+ putWord64be (n-32) (w`shiftR`32)
82+ putWord64be 32 (w .&. 0xffffffff)
7983
8084joinPut :: Put -> BitPut ()
8185joinPut m = BitPut $ \s0 -> PairS () $