Skip to content

Commit

Permalink
Use CPP to ensure compilation on GHC 7.0.x
Browse files Browse the repository at this point in the history
Foreign.Unsafe was only introduced in later GHC versions and made mandatory
after GHC 7.6.
  • Loading branch information
meiersi committed Mar 11, 2013
1 parent 9a2c812 commit 5e07b2c
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 2 deletions.
8 changes: 7 additions & 1 deletion Blaze/ByteString/Builder/ByteString.hs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ module Blaze.ByteString.Builder.ByteString
import Blaze.ByteString.Builder.Internal hiding (insertByteString) import Blaze.ByteString.Builder.Internal hiding (insertByteString)
import qualified Blaze.ByteString.Builder.Internal as I (insertByteString) import qualified Blaze.ByteString.Builder.Internal as I (insertByteString)


#ifdef HAS_FOREIGN_UNSAFE_MODULE
import Foreign (withForeignPtr, touchForeignPtr, copyBytes, plusPtr, minusPtr) import Foreign (withForeignPtr, touchForeignPtr, copyBytes, plusPtr, minusPtr)
import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr) import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
#else
import Foreign (unsafeForeignPtrToPtr, withForeignPtr, touchForeignPtr, copyBytes, plusPtr, minusPtr)
#endif

import Data.Monoid import Data.Monoid


import qualified Data.ByteString as S import qualified Data.ByteString as S
Expand All @@ -48,7 +53,8 @@ import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Base as S import qualified Data.ByteString.Base as S
import qualified Data.ByteString.Lazy.Base as L -- FIXME: check if this is the right module import qualified Data.ByteString.Lazy.Base as L -- FIXME: check if this is the right module
#else #else
import qualified Data.ByteString.Internal as S import qualified Data.ByteString.Internal as S
import qualified Data.ByteString.Lazy.Internal as L
#endif #endif




Expand Down
4 changes: 4 additions & 0 deletions Blaze/ByteString/Builder/Internal.hs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -49,8 +49,12 @@ module Blaze.ByteString.Builder.Internal (
, defaultMaximalCopySize , defaultMaximalCopySize
) where ) where


#ifdef HAS_FOREIGN_UNSAFE_MODULE
import Foreign (withForeignPtr, sizeOf, copyBytes, plusPtr, minusPtr) import Foreign (withForeignPtr, sizeOf, copyBytes, plusPtr, minusPtr)
import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr) import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
#else
import Foreign (unsafeForeignPtrToPtr, withForeignPtr, sizeOf, copyBytes, plusPtr, minusPtr)
#endif


import Control.Monad (unless) import Control.Monad (unless)


Expand Down
5 changes: 4 additions & 1 deletion Blaze/ByteString/Builder/Internal/Buffer.hs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -40,9 +40,12 @@ module Blaze.ByteString.Builder.Internal.Buffer (
, runPut , runPut
) where ) where


import Prelude #ifdef HAS_FOREIGN_UNSAFE_MODULE
import Foreign (Word8, ForeignPtr, Ptr, plusPtr, minusPtr) import Foreign (Word8, ForeignPtr, Ptr, plusPtr, minusPtr)
import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr) import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
#else
import Foreign (unsafeForeignPtrToPtr, Word8, ForeignPtr, Ptr, plusPtr, minusPtr)
#endif


import qualified Data.ByteString as S import qualified Data.ByteString as S


Expand Down
5 changes: 5 additions & 0 deletions blaze-builder.cabal
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ Source-repository head
Library Library
ghc-options: -Wall ghc-options: -Wall


-- Earlier versions of GHC did not split off unsafe functions in "Foreign"
if impl(ghc >= 7.4)
cpp-options: -DHAS_FOREIGN_UNSAFE_MODULE


exposed-modules: Blaze.ByteString.Builder exposed-modules: Blaze.ByteString.Builder
Blaze.ByteString.Builder.Int Blaze.ByteString.Builder.Int
Blaze.ByteString.Builder.Word Blaze.ByteString.Builder.Word
Expand Down

0 comments on commit 5e07b2c

Please sign in to comment.