on master help sign in
Use integer-simple if the integer-simple flag is set.
513b652Thomas M. DuBuisson
Data/Text/Lazy/Builder/Int.hs+11−2
@@ -27,12 +27,16 @@ import GHC.Types (Int(..))
27#ifdef __GLASGOW_HASKELL__
27#ifdef __GLASGOW_HASKELL__
28# if __GLASGOW_HASKELL__ < 611
28# if __GLASGOW_HASKELL__ < 611
29import GHC.Integer.Internals
29import GHC.Integer.Internals
30−# else
30+# elif defined(INTEGER_GMP)
31import GHC.Integer.GMP.Internals
31import GHC.Integer.GMP.Internals
32+# elif defined(INTEGER_SIMPLE)
33+import GHC.Integer
34+# else
35+# error "You need to use either GMP or integer-simple."
32# endif
36# endif
33#endif
37#endif
34
38
35−#ifdef INTEGER_GMP
39+#if defined(INTEGER_GMP) || defined(INTEGER_SIMPLE)
36# define PAIR(a,b) (# a,b #)
40# define PAIR(a,b) (# a,b #)
37#else
41#else
38# define PAIR(a,b) (a,b)
42# define PAIR(a,b) (a,b)
@@ -93,8 +97,13 @@ int = decimal
93data T = T !Integer !Int
97data T = T !Integer !Int
94
98
95integer :: Int -> Integer -> Builder
99integer :: Int -> Integer -> Builder
100+#ifdef INTEGER_GMP
96integer 10 (S# i#) = decimal (I# i#)
101integer 10 (S# i#) = decimal (I# i#)
97integer 16 (S# i#) = hexadecimal (I# i#)
102integer 16 (S# i#) = hexadecimal (I# i#)
103+#else
104+integer 10 i = decimal i
105+integer 16 i = hexadecimal i
106+#endif
98integer base i
107integer base i
99 | i < 0 = singleton '-' <> go (-i)
108 | i < 0 = singleton '-' <> go (-i)
100 | otherwise = go i
109 | otherwise = go i
text.cabal+11−2
@@ -72,6 +72,10 @@ flag developer
72 description: operate in developer mode
72 description: operate in developer mode
73 default: False
73 default: False
74
74
75+flag integer-simple
76+ description: Use the simple integer library instead of GMP
77+ default: False
78+
75library
79library
76 c-sources: cbits/cbits.c
80 c-sources: cbits/cbits.c
77
81
@@ -138,8 +142,13 @@ library
138 cpp-options: -DASSERTS
142 cpp-options: -DASSERTS
139
143
140 if impl(ghc >= 6.11)
144 if impl(ghc >= 6.11)
145+ if flag(integer-simple)
146+ cpp-options: -DINTEGER_SIMPLE
147+ build-depends: integer-simple >= 0.1 && < 0.5
148+ else
141− cpp-options: -DINTEGER_GMP
149+ cpp-options: -DINTEGER_GMP
142− build-depends: integer-gmp >= 0.2 && < 0.5
150+ build-depends: integer-gmp >= 0.2 && < 0.5
151+
143
152
144 if impl(ghc >= 6.9) && impl(ghc < 6.11)
153 if impl(ghc >= 6.9) && impl(ghc < 6.11)
145 cpp-options: -DINTEGER_GMP
154 cpp-options: -DINTEGER_GMP