diff options
author | Sam Truzjan <pxqr.sta@gmail.com> | 2014-02-28 18:33:26 +0400 |
---|---|---|
committer | Sam Truzjan <pxqr.sta@gmail.com> | 2014-02-28 18:33:26 +0400 |
commit | f8569f9384a202de886e12bb3e85b042b526d3cd (patch) | |
tree | 036f1f4cb3907d7be992bf65a865ae53e856e437 | |
parent | c8fb44ff606940033b82bdb057435860879fd42e (diff) |
Fix build failure with bytestring-0.10.2.0
-rw-r--r-- | bencoding.cabal | 8 | ||||
-rw-r--r-- | src/Data/BEncode/Internal.hs | 11 |
2 files changed, 14 insertions, 5 deletions
diff --git a/bencoding.cabal b/bencoding.cabal index 3793ef4..2c3c5fb 100644 --- a/bencoding.cabal +++ b/bencoding.cabal | |||
@@ -41,11 +41,13 @@ library | |||
41 | , Data.BEncode.Types | 41 | , Data.BEncode.Types |
42 | build-depends: base == 4.* | 42 | build-depends: base == 4.* |
43 | , ghc-prim | 43 | , ghc-prim |
44 | , integer-gmp | ||
44 | , deepseq == 1.3.* | 45 | , deepseq == 1.3.* |
46 | |||
45 | , mtl | 47 | , mtl |
46 | 48 | ||
47 | , attoparsec >= 0.10 | 49 | , attoparsec >= 0.10 |
48 | , bytestring >= 0.10.0.2 | 50 | , bytestring >= 0.10 |
49 | , text >= 0.11 | 51 | , text >= 0.11 |
50 | , pretty | 52 | , pretty |
51 | ghc-options: -Wall -O2 -fno-warn-unused-do-bind | 53 | ghc-options: -Wall -O2 -fno-warn-unused-do-bind |
@@ -60,7 +62,7 @@ test-suite properties | |||
60 | , ghc-prim | 62 | , ghc-prim |
61 | 63 | ||
62 | , containers >= 0.4 | 64 | , containers >= 0.4 |
63 | , bytestring >= 0.10.0.2 | 65 | , bytestring >= 0.10 |
64 | , attoparsec >= 0.10 | 66 | , attoparsec >= 0.10 |
65 | 67 | ||
66 | , bencoding | 68 | , bencoding |
@@ -80,7 +82,7 @@ benchmark bench-comparison | |||
80 | , deepseq | 82 | , deepseq |
81 | 83 | ||
82 | , attoparsec >= 0.10 | 84 | , attoparsec >= 0.10 |
83 | , bytestring >= 0.10.0.2 | 85 | , bytestring >= 0.10 |
84 | 86 | ||
85 | , criterion | 87 | , criterion |
86 | 88 | ||
diff --git a/src/Data/BEncode/Internal.hs b/src/Data/BEncode/Internal.hs index 4282cbf..e5ba89c 100644 --- a/src/Data/BEncode/Internal.hs +++ b/src/Data/BEncode/Internal.hs | |||
@@ -8,6 +8,7 @@ | |||
8 | -- This module provides bencode values serialization. Normally, you | 8 | -- This module provides bencode values serialization. Normally, you |
9 | -- don't need to import this module, use 'Data.BEncode' instead. | 9 | -- don't need to import this module, use 'Data.BEncode' instead. |
10 | -- | 10 | -- |
11 | {-# LANGUAGE MagicHash #-} | ||
11 | module Data.BEncode.Internal | 12 | module Data.BEncode.Internal |
12 | ( -- * Parsing | 13 | ( -- * Parsing |
13 | parser | 14 | parser |
@@ -23,10 +24,10 @@ import Control.Applicative | |||
23 | import Data.Attoparsec.ByteString.Char8 (Parser) | 24 | import Data.Attoparsec.ByteString.Char8 (Parser) |
24 | import qualified Data.Attoparsec.ByteString.Char8 as P | 25 | import qualified Data.Attoparsec.ByteString.Char8 as P |
25 | import Data.ByteString as B | 26 | import Data.ByteString as B |
27 | import Data.ByteString.Internal as B (c2w, w2c) | ||
26 | import qualified Data.ByteString.Lazy as Lazy | 28 | import qualified Data.ByteString.Lazy as Lazy |
27 | import qualified Data.ByteString.Lazy.Builder as B | 29 | import qualified Data.ByteString.Lazy.Builder as B |
28 | import qualified Data.ByteString.Lazy.Builder.ASCII as B | 30 | import qualified Data.ByteString.Lazy.Builder.ASCII as B |
29 | import Data.ByteString.Internal as B (c2w, w2c) | ||
30 | import Data.Foldable | 31 | import Data.Foldable |
31 | import Data.List as L | 32 | import Data.List as L |
32 | import Data.Monoid | 33 | import Data.Monoid |
@@ -35,17 +36,23 @@ import Text.PrettyPrint hiding ((<>)) | |||
35 | import Data.BEncode.Types | 36 | import Data.BEncode.Types |
36 | import Data.BEncode.BDict as BD | 37 | import Data.BEncode.BDict as BD |
37 | 38 | ||
39 | import GHC.Types | ||
40 | import GHC.Integer.GMP.Internals | ||
38 | 41 | ||
39 | {-------------------------------------------------------------------- | 42 | {-------------------------------------------------------------------- |
40 | -- Serialization | 43 | -- Serialization |
41 | --------------------------------------------------------------------} | 44 | --------------------------------------------------------------------} |
42 | 45 | ||
46 | integerDecimal :: Integer -> B.Builder | ||
47 | integerDecimal (S# i#) = B.intDec (I# i#) | ||
48 | integerDecimal i = B.string7 (show i) -- TODO more efficient | ||
49 | |||
43 | -- | BEncode format encoder according to specification. | 50 | -- | BEncode format encoder according to specification. |
44 | builder :: BValue -> B.Builder | 51 | builder :: BValue -> B.Builder |
45 | builder = go | 52 | builder = go |
46 | where | 53 | where |
47 | go (BInteger i) = B.word8 (c2w 'i') <> | 54 | go (BInteger i) = B.word8 (c2w 'i') <> |
48 | B.integerDec i <> | 55 | integerDecimal i <> |
49 | B.word8 (c2w 'e') | 56 | B.word8 (c2w 'e') |
50 | go (BString s) = buildString s | 57 | go (BString s) = buildString s |
51 | go (BList l) = B.word8 (c2w 'l') <> | 58 | go (BList l) = B.word8 (c2w 'l') <> |