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