[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / lib / std / PrelAddr.lhs
index d7febe7..dab7f89 100644 (file)
@@ -9,20 +9,23 @@
 
 module PrelAddr (
          Addr(..)
+       , Word(..)
        , nullAddr                      -- :: Addr
        , plusAddr                      -- :: Addr -> Int -> Addr
        , indexAddrOffAddr              -- :: Addr -> Int -> Addr
 
+       , Word64(..)
+       , Int64(..)
    ) where
 
 import PrelGHC
 import PrelBase
-import PrelST
 import PrelCCall
 \end{code}
 
 \begin{code}
 data Addr = A# Addr#   deriving (Eq, Ord)
+data Word = W# Word#   deriving (Eq, Ord)
 
 instance Show Addr where
    showsPrec p (A# a) = showsPrec p (I# (addr2Int# a))
@@ -36,6 +39,27 @@ instance CCallable Addr
 instance CCallable Addr#
 instance CReturnable Addr
 
+instance CCallable Word
+instance CCallable Word#
+instance CReturnable Word
+
+#if WORD_SIZE_IN_BYTES == 8
+data Word64 = W64# Word#
+data Int64  = I64# Int#
+#else
+data Word64 = W64# Word64# --deriving (Eq, Ord) -- Glasgow extension
+data Int64  = I64# Int64#  --deriving (Eq, Ord) -- Glasgow extension
+
+instance CCallable   Word64#
+instance CCallable   Int64#
+#endif
+
+instance CCallable   Word64
+instance CReturnable Word64
+
+instance CCallable   Int64
+instance CReturnable Int64
+
 indexAddrOffAddr   :: Addr -> Int -> Addr
 indexAddrOffAddr (A# addr#) n
   = case n                             of { I# n# ->