diff options
author | Sam T <pxqr.sta@gmail.com> | 2013-05-05 03:50:07 +0400 |
---|---|---|
committer | Sam T <pxqr.sta@gmail.com> | 2013-05-05 03:50:07 +0400 |
commit | 950d728dc12302858f0c20d9890dc97975f4e9a9 (patch) | |
tree | 0e69d799de4f65da1201fef8efcfad55bbd0a0c0 /src/Network/BitTorrent/PeerWire/Bitfield.hs | |
parent | 54efdaf9c94b813213c687b1f0e750286312de81 (diff) |
~ Minor changes.
Diffstat (limited to 'src/Network/BitTorrent/PeerWire/Bitfield.hs')
-rw-r--r-- | src/Network/BitTorrent/PeerWire/Bitfield.hs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/Network/BitTorrent/PeerWire/Bitfield.hs b/src/Network/BitTorrent/PeerWire/Bitfield.hs index 2baeb516..9d88e784 100644 --- a/src/Network/BitTorrent/PeerWire/Bitfield.hs +++ b/src/Network/BitTorrent/PeerWire/Bitfield.hs | |||
@@ -18,6 +18,7 @@ module Network.BitTorrent.PeerWire.Bitfield | |||
18 | 18 | ||
19 | -- * Construction | 19 | -- * Construction |
20 | , empty, full | 20 | , empty, full |
21 | , toList | ||
21 | , fromByteString, toByteString | 22 | , fromByteString, toByteString |
22 | 23 | ||
23 | -- * Query | 24 | -- * Query |
@@ -62,6 +63,13 @@ full :: Int -> Bitfield | |||
62 | full n = MkBitfield $ B.replicate (sizeInBase n 8) (complement 0) | 63 | full n = MkBitfield $ B.replicate (sizeInBase n 8) (complement 0) |
63 | {-# INLINE full #-} | 64 | {-# INLINE full #-} |
64 | 65 | ||
66 | toList :: Bitfield -> [Bool] | ||
67 | toList (MkBitfield bs) = concatMap unpkg (B.unpack bs) | ||
68 | where | ||
69 | unpkg :: Word8 -> [Bool] | ||
70 | unpkg byte = L.map (testBit byte) [0..bitSize (undefined :: Word8) - 1] | ||
71 | {-# INLINE toList #-} | ||
72 | |||
65 | fromByteString :: ByteString -> Bitfield | 73 | fromByteString :: ByteString -> Bitfield |
66 | fromByteString = MkBitfield | 74 | fromByteString = MkBitfield |
67 | {-# INLINE fromByteString #-} | 75 | {-# INLINE fromByteString #-} |
@@ -278,5 +286,5 @@ findMax (MkBitfield b) = do | |||
278 | 286 | ||
279 | {-# INLINE findMax #-} | 287 | {-# INLINE findMax #-} |
280 | 288 | ||
281 | frequencies :: [Bitfield] -> UArray PieceIx Int | 289 | frequencies :: [Bitfield] -> [Int] |
282 | frequencies = undefined | 290 | frequencies xs = foldr1 (zipWith (+)) $ map (map fromEnum . toList) xs |