summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base32-bytestring.cabal7
-rw-r--r--src/Data/ByteString/Base32/Internal.hs10
2 files changed, 16 insertions, 1 deletions
diff --git a/base32-bytestring.cabal b/base32-bytestring.cabal
index a96d3fa..aa82911 100644
--- a/base32-bytestring.cabal
+++ b/base32-bytestring.cabal
@@ -20,6 +20,10 @@ description:
20extra-source-files: README.md 20extra-source-files: README.md
21 , ChangeLog 21 , ChangeLog
22 22
23flag bits-extras
24 description: Use more-effecient bits-extras bitwise operations.
25 default: False
26
23source-repository head 27source-repository head
24 type: git 28 type: git
25 location: git://github.com/pxqr/base32-bytestring.git 29 location: git://github.com/pxqr/base32-bytestring.git
@@ -41,7 +45,8 @@ library
41 build-depends: base == 4.* 45 build-depends: base == 4.*
42 , bytestring >= 0.9 46 , bytestring >= 0.9
43 , cpu == 0.1.* 47 , cpu == 0.1.*
44 , bits-extras == 0.1.* 48 if flag(bits-extras)
49 build-depends: bits-extras == 0.1.*
45 ghc-options: -O2 -Wall 50 ghc-options: -O2 -Wall
46 51
47test-suite spec 52test-suite spec
diff --git a/src/Data/ByteString/Base32/Internal.hs b/src/Data/ByteString/Base32/Internal.hs
index aa7c5b3..31f6e30 100644
--- a/src/Data/ByteString/Base32/Internal.hs
+++ b/src/Data/ByteString/Base32/Internal.hs
@@ -26,7 +26,9 @@ module Data.ByteString.Base32.Internal
26import Prelude hiding (catch) 26import Prelude hiding (catch)
27#endif 27#endif
28import Control.Exception hiding (mask) 28import Control.Exception hiding (mask)
29#ifdef VERSION_bits_extras
29import Data.Bits.Extras 30import Data.Bits.Extras
31#endif
30import Data.ByteString as BS 32import Data.ByteString as BS
31import Data.ByteString.Internal as BS 33import Data.ByteString.Internal as BS
32import Data.Word 34import Data.Word
@@ -46,11 +48,19 @@ type Word5 = Word8
46-- intrinsics 48-- intrinsics
47-- 49--
48toBE64' :: Word64 -> Word64 50toBE64' :: Word64 -> Word64
51#ifdef VERSION_bits_extras
49toBE64' = if getSystemEndianness == BigEndian then id else byteSwap 52toBE64' = if getSystemEndianness == BigEndian then id else byteSwap
53#else
54toBE64' = toBE64
55#endif
50{-# INLINE toBE64' #-} 56{-# INLINE toBE64' #-}
51 57
52toBE32' :: Word32 -> Word32 58toBE32' :: Word32 -> Word32
59#ifdef VERSION_bits_extras
53toBE32' = if getSystemEndianness == BigEndian then id else byteSwap 60toBE32' = if getSystemEndianness == BigEndian then id else byteSwap
61#else
62toBE32' = toBE32
63#endif
54{-# INLINE toBE32' #-} 64{-# INLINE toBE32' #-}
55 65
56fromBE32' :: Word32 -> Word32 66fromBE32' :: Word32 -> Word32