From f8569f9384a202de886e12bb3e85b042b526d3cd Mon Sep 17 00:00:00 2001 From: Sam Truzjan Date: Fri, 28 Feb 2014 18:33:26 +0400 Subject: Fix build failure with bytestring-0.10.2.0 --- bencoding.cabal | 8 +++++--- 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 , Data.BEncode.Types build-depends: base == 4.* , ghc-prim + , integer-gmp , deepseq == 1.3.* + , mtl , attoparsec >= 0.10 - , bytestring >= 0.10.0.2 + , bytestring >= 0.10 , text >= 0.11 , pretty ghc-options: -Wall -O2 -fno-warn-unused-do-bind @@ -60,7 +62,7 @@ test-suite properties , ghc-prim , containers >= 0.4 - , bytestring >= 0.10.0.2 + , bytestring >= 0.10 , attoparsec >= 0.10 , bencoding @@ -80,7 +82,7 @@ benchmark bench-comparison , deepseq , attoparsec >= 0.10 - , bytestring >= 0.10.0.2 + , bytestring >= 0.10 , criterion 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 @@ -- This module provides bencode values serialization. Normally, you -- don't need to import this module, use 'Data.BEncode' instead. -- +{-# LANGUAGE MagicHash #-} module Data.BEncode.Internal ( -- * Parsing parser @@ -23,10 +24,10 @@ import Control.Applicative import Data.Attoparsec.ByteString.Char8 (Parser) import qualified Data.Attoparsec.ByteString.Char8 as P import Data.ByteString as B +import Data.ByteString.Internal as B (c2w, w2c) import qualified Data.ByteString.Lazy as Lazy import qualified Data.ByteString.Lazy.Builder as B import qualified Data.ByteString.Lazy.Builder.ASCII as B -import Data.ByteString.Internal as B (c2w, w2c) import Data.Foldable import Data.List as L import Data.Monoid @@ -35,17 +36,23 @@ import Text.PrettyPrint hiding ((<>)) import Data.BEncode.Types import Data.BEncode.BDict as BD +import GHC.Types +import GHC.Integer.GMP.Internals {-------------------------------------------------------------------- -- Serialization --------------------------------------------------------------------} +integerDecimal :: Integer -> B.Builder +integerDecimal (S# i#) = B.intDec (I# i#) +integerDecimal i = B.string7 (show i) -- TODO more efficient + -- | BEncode format encoder according to specification. builder :: BValue -> B.Builder builder = go where go (BInteger i) = B.word8 (c2w 'i') <> - B.integerDec i <> + integerDecimal i <> B.word8 (c2w 'e') go (BString s) = buildString s go (BList l) = B.word8 (c2w 'l') <> -- cgit v1.2.3