2 % (c) The AQUA Project, Glasgow University, 1994-1998
5 \section[PrelAddr]{Module @PrelAddr@}
8 {-# OPTIONS -fno-implicit-prelude #-}
14 , plusAddr -- :: Addr -> Int -> Addr
15 , indexAddrOffAddr -- :: Addr -> Int -> Addr
27 data Addr = A# Addr# deriving (Eq, Ord)
28 data Word = W# Word# deriving (Eq, Ord)
30 instance Show Addr where
31 showsPrec p (A# a) = showsPrec p (I# (addr2Int# a))
33 nullAddr = ``NULL'' :: Addr
35 plusAddr :: Addr -> Int -> Addr
36 plusAddr (A# addr) (I# off) = A# (int2Addr# (addr2Int# addr +# off))
38 instance CCallable Addr
39 instance CCallable Addr#
40 instance CReturnable Addr
42 instance CCallable Word
43 instance CCallable Word#
44 instance CReturnable Word
46 #if WORD_SIZE_IN_BYTES == 8
47 data Word64 = W64# Word#
48 data Int64 = I64# Int#
50 data Word64 = W64# Word64# --deriving (Eq, Ord) -- Glasgow extension
51 data Int64 = I64# Int64# --deriving (Eq, Ord) -- Glasgow extension
53 instance CCallable Word64#
54 instance CCallable Int64#
57 instance CCallable Word64
58 instance CReturnable Word64
60 instance CCallable Int64
61 instance CReturnable Int64
63 indexAddrOffAddr :: Addr -> Int -> Addr
64 indexAddrOffAddr (A# addr#) n
65 = case n of { I# n# ->
66 case indexAddrOffAddr# addr# n# of { r# ->