summaryrefslogtreecommitdiff
path: root/src/Data
diff options
context:
space:
mode:
authorSam T <sta.cs.vsu@gmail.com>2013-04-05 04:35:59 +0400
committerSam T <sta.cs.vsu@gmail.com>2013-04-05 04:35:59 +0400
commit60f754161113324c94a6ed547c4e05bba598eedb (patch)
tree15fe68c1f823576e5835021e4209bbb149a2a915 /src/Data
parentc508066a6f4d2a0e267958aecf4ded609e1598b9 (diff)
+ instances for words
Diffstat (limited to 'src/Data')
-rw-r--r--src/Data/BEncode.hs42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/Data/BEncode.hs b/src/Data/BEncode.hs
index c844858..fb2fa0b 100644
--- a/src/Data/BEncode.hs
+++ b/src/Data/BEncode.hs
@@ -33,6 +33,7 @@ import Data.Maybe (mapMaybe)
33import Data.Monoid ((<>)) 33import Data.Monoid ((<>))
34import Data.Foldable (foldMap) 34import Data.Foldable (foldMap)
35import Data.Traversable (traverse) 35import Data.Traversable (traverse)
36import Data.Word (Word8, Word16, Word32, Word64, Word)
36import Data.Map (Map) 37import Data.Map (Map)
37import qualified Data.Map as M 38import qualified Data.Map as M
38import Data.Attoparsec.ByteString.Char8 (Parser) 39import Data.Attoparsec.ByteString.Char8 (Parser)
@@ -93,7 +94,6 @@ instance BEncodable Int where
93 fromBEncode _ = decodingError "integer" 94 fromBEncode _ = decodingError "integer"
94 {-# INLINE fromBEncode #-} 95 {-# INLINE fromBEncode #-}
95 96
96
97instance BEncodable Bool where 97instance BEncodable Bool where
98 toBEncode = toBEncode . fromEnum 98 toBEncode = toBEncode . fromEnum
99 {-# INLINE toBEncode #-} 99 {-# INLINE toBEncode #-}
@@ -335,3 +335,43 @@ instance Pretty BEncode where
335 PP.rbrace 335 PP.rbrace
336 where 336 where
337 ppKV (k, v) = ppBS k <+> PP.colon <+> PP.pretty v 337 ppKV (k, v) = ppBS k <+> PP.colon <+> PP.pretty v
338
339
340------------------------------- other instances ------------------------------
341
342instance BEncodable Word8 where
343 {-# SPECIALIZE instance BEncodable Word8 #-}
344 toBEncode = toBEncode . (fromIntegral :: Word8 -> Word64)
345 {-# INLINE toBEncode #-}
346 fromBEncode b = (fromIntegral :: Word64 -> Word8) <$> fromBEncode b
347 {-# INLINE fromBEncode #-}
348
349instance BEncodable Word16 where
350 {-# SPECIALIZE instance BEncodable Word16 #-}
351 toBEncode = toBEncode . (fromIntegral :: Word16 -> Word64)
352 {-# INLINE toBEncode #-}
353 fromBEncode b = (fromIntegral :: Word64 -> Word16) <$> fromBEncode b
354 {-# INLINE fromBEncode #-}
355
356instance BEncodable Word32 where
357 {-# SPECIALIZE instance BEncodable Word32 #-}
358 toBEncode = toBEncode . (fromIntegral :: Word32 -> Word64)
359 {-# INLINE toBEncode #-}
360 fromBEncode b = (fromIntegral :: Word64 -> Word32) <$> fromBEncode b
361 {-# INLINE fromBEncode #-}
362
363instance BEncodable Word64 where
364 {-# SPECIALIZE instance BEncodable Word64 #-}
365 toBEncode = toBEncode . (fromIntegral :: Word64 -> Int)
366 {-# INLINE toBEncode #-}
367 fromBEncode b = (fromIntegral :: Int -> Word64) <$> fromBEncode b
368 {-# INLINE fromBEncode #-}
369
370instance BEncodable Word where
371 {-# SPECIALIZE instance BEncodable Word #-}
372 toBEncode = toBEncode . (fromIntegral :: Word -> Int)
373 {-# INLINE toBEncode #-}
374 fromBEncode b = (fromIntegral :: Int -> Word) <$> fromBEncode b
375 {-# INLINE fromBEncode #-}
376
377-- todo: platform independent \ No newline at end of file