[commit: bytestring] master: Add NFData instances for strict and lazy ByteStrings (43388cd)
Ian Lynagh
igloo at earth.li
Wed Feb 22 21:57:12 CET 2012
Repository : ssh://darcs.haskell.org//srv/darcs/packages/bytestring
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/43388cda7838a1c92789a5fd2988c3f0f9965fe9
>---------------------------------------------------------------
commit 43388cda7838a1c92789a5fd2988c3f0f9965fe9
Author: Bas van Dijk <v.dijk.bas at gmail.com>
Date: Sat Nov 5 16:50:50 2011 +0000
Add NFData instances for strict and lazy ByteStrings
>---------------------------------------------------------------
Data/ByteString/Internal.hs | 4 ++++
Data/ByteString/Lazy/Internal.hs | 6 ++++++
bytestring.cabal | 4 ++--
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/Data/ByteString/Internal.hs b/Data/ByteString/Internal.hs
index 938f2a1..1dce1c1 100644
--- a/Data/ByteString/Internal.hs
+++ b/Data/ByteString/Internal.hs
@@ -71,6 +71,8 @@ import Foreign.Storable (Storable(..))
import Foreign.C.Types (CInt(..), CSize(..), CULong(..))
import Foreign.C.String (CString)
+import Control.DeepSeq (NFData)
+
#ifndef __NHC__
import Control.Exception (assert)
#endif
@@ -157,6 +159,8 @@ data ByteString = PS {-# UNPACK #-} !(ForeignPtr Word8) -- payload
deriving (Data, Typeable)
#endif
+instance NFData ByteString
+
instance Show ByteString where
showsPrec p ps r = showsPrec p (unpackWith w2c ps) r
diff --git a/Data/ByteString/Lazy/Internal.hs b/Data/ByteString/Lazy/Internal.hs
index 52ba17b..6489f6c 100644
--- a/Data/ByteString/Lazy/Internal.hs
+++ b/Data/ByteString/Lazy/Internal.hs
@@ -40,6 +40,8 @@ import qualified Data.ByteString.Internal as S
import Foreign.Storable (Storable(sizeOf))
+import Control.DeepSeq (NFData, rnf)
+
#if defined(__GLASGOW_HASKELL__)
import Data.Typeable (Typeable)
#if __GLASGOW_HASKELL__ >= 610
@@ -61,6 +63,10 @@ data ByteString = Empty | Chunk {-# UNPACK #-} !S.ByteString ByteString
#endif
)
+instance NFData ByteString where
+ rnf Empty = ()
+ rnf (Chunk _ b) = rnf b
+
------------------------------------------------------------------------
-- | The data type invariant:
diff --git a/bytestring.cabal b/bytestring.cabal
index 8c6ee23..ec86c75 100644
--- a/bytestring.cabal
+++ b/bytestring.cabal
@@ -27,7 +27,7 @@ Cabal-Version: >= 1.8
extra-source-files: README TODO
library
- build-depends: base >= 3 && < 5
+ build-depends: base >= 3 && < 5, deepseq
if impl(ghc >= 6.10)
build-depends: ghc-prim, base >= 4
@@ -71,7 +71,7 @@ test-suite prop-compiled
type: exitcode-stdio-1.0
main-is: Properties.hs
hs-source-dirs: . tests
- build-depends: base, random, directory,
+ build-depends: base, deepseq, random, directory,
QuickCheck >= 2.3 && < 3
if impl(ghc >= 6.10)
build-depends: ghc-prim
More information about the Cvs-libraries
mailing list