-{-# OPTIONS -fno-implicit-prelude #-}
+{-# OPTIONS_GHC -fno-implicit-prelude #-}
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Word
#include "MachDeps.h"
+-- #hide
module GHC.Word (
Word(..), Word8(..), Word16(..), Word32(..), Word64(..),
toEnumError, fromEnumError, succError, predError)
-- |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)
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
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)
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)
#endif
-instance CCallable Word32
-instance CReturnable Word32
-
instance Show Word32 where
#if WORD_SIZE_IN_BITS < 33
showsPrec p x = showsPrec p (toInteger x)
#endif
-instance CCallable Word64
-instance CReturnable Word64
-
instance Show Word64 where
showsPrec p x = showsPrec p (toInteger x)