on master help sign in
Implement putWord64be naively
d676204Lennart Kolmodin
BitsPut.hs+5−1
@@ -7,6 +7,7 @@ module BitsPut
7 , putWord8
7 , putWord8
8 , putWord16be
8 , putWord16be
9 , putWord32be
9 , putWord32be
10+ , putWord64be
10 )
11 )
11 where
12 where
12
13
@@ -75,7 +76,10 @@ putWord32be n w
75
76
76putWord64be :: Int -> Word64 -> BitPut ()
77putWord64be :: Int -> Word64 -> BitPut ()
77putWord64be n w
78putWord64be 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)
79
83
80joinPut :: Put -> BitPut ()
84joinPut :: Put -> BitPut ()
81joinPut m = BitPut $ \s0 -> PairS () $
85joinPut m = BitPut $ \s0 -> PairS () $