[project @ 2005-02-18 15:06:45 by simonmar]
[ghc-base.git] / GHC / Word.hs
index 2332c13..022a85e 100644 (file)
@@ -1,4 +1,4 @@
-{-# OPTIONS -fno-implicit-prelude #-}
+{-# OPTIONS_GHC -fno-implicit-prelude #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  GHC.Word
@@ -16,6 +16,7 @@
 
 #include "MachDeps.h"
 
+-- #hide
 module GHC.Word (
     Word(..), Word8(..), Word16(..), Word32(..), Word64(..),
     toEnumError, fromEnumError, succError, predError)
@@ -69,9 +70,6 @@ predError inst_ty =
 -- |A 'Word' is an unsigned integral type, with the same size as 'Int'.
 data Word = W# Word# deriving (Eq, Ord)
 
-instance CCallable Word
-instance CReturnable Word
-
 instance Show Word where
     showsPrec p x = showsPrec p (toInteger x)
 
@@ -135,12 +133,15 @@ instance Integral Word where
 
 instance Bounded Word where
     minBound = 0
+
+    -- use unboxed literals for maxBound, because GHC doesn't optimise
+    -- (fromInteger 0xffffffff :: Word).
 #if WORD_SIZE_IN_BITS == 31
-    maxBound = 0x7FFFFFFF
+    maxBound = W# (int2Word# 0x7FFFFFFF#)
 #elif WORD_SIZE_IN_BITS == 32
-    maxBound = 0xFFFFFFFF
+    maxBound = W# (int2Word# 0xFFFFFFFF#)
 #else
-    maxBound = 0xFFFFFFFFFFFFFFFF
+    maxBound = W# (int2Word# 0xFFFFFFFFFFFFFFFF#)
 #endif
 
 instance Ix Word where
@@ -185,9 +186,6 @@ instance Bits Word where
 data Word8 = W8# Word# deriving (Eq, Ord)
 -- ^ 8-bit unsigned integer type
 
-instance CCallable Word8
-instance CReturnable Word8
-
 instance Show Word8 where
     showsPrec p x = showsPrec p (fromIntegral x :: Int)
 
@@ -288,9 +286,6 @@ instance Bits Word8 where
 data Word16 = W16# Word# deriving (Eq, Ord)
 -- ^ 16-bit unsigned integer type
 
-instance CCallable Word16
-instance CReturnable Word16
-
 instance Show Word16 where
     showsPrec p x = showsPrec p (fromIntegral x :: Int)
 
@@ -611,9 +606,6 @@ instance Bits Word32 where
 
 #endif
 
-instance CCallable Word32
-instance CReturnable Word32
-
 instance Show Word32 where
 #if WORD_SIZE_IN_BITS < 33
     showsPrec p x = showsPrec p (toInteger x)
@@ -868,9 +860,6 @@ instance Bits Word64 where
 
 #endif
 
-instance CCallable Word64
-instance CReturnable Word64
-
 instance Show Word64 where
     showsPrec p x = showsPrec p (toInteger x)