module GHC.Ptr ( Ptr(..), FunPtr(..), nullPtr, castPtr, plusPtr, alignPtr, minusPtr, nullFunPtr, castFunPtr, castFunPtrToPtr, castPtrToFunPtr ) where import GHC.Base import GHC.Show import GHC.Num import GHC.List ( length, replicate ) import Numeric ( showHex ) #include "MachDeps.h" data Ptr a = Ptr Addr# deriving (Eq, Ord) nullPtr :: Ptr a nullPtr = Ptr nullAddr# castPtr :: Ptr a -> Ptr b castPtr (Ptr addr) = Ptr addr plusPtr :: Ptr a -> Int -> Ptr b plusPtr (Ptr addr) (I# d) = Ptr (plusAddr# addr d) alignPtr :: Ptr a -> Int -> Ptr a alignPtr addr@(Ptr a) (I# i) = case remAddr# a i of { 0# -> addr; n -> Ptr (plusAddr# a (i -# n)) } minusPtr :: Ptr a -> Ptr b -> Int minusPtr (Ptr a1) (Ptr a2) = I# (minusAddr# a1 a2) data FunPtr a = FunPtr Addr# deriving (Eq, Ord) nullFunPtr :: FunPtr a nullFunPtr = FunPtr nullAddr# castFunPtr :: FunPtr a -> FunPtr b castFunPtr (FunPtr addr) = FunPtr addr castFunPtrToPtr :: FunPtr a -> Ptr b castFunPtrToPtr (FunPtr addr) = Ptr addr castPtrToFunPtr :: Ptr a -> FunPtr b castPtrToFunPtr (Ptr addr) = FunPtr addr instance Show (Ptr a) where showsPrec _ (Ptr a) rs = pad_out (showHex (wordToInteger(int2Word#(addr2Int# a))) "") where pad_out ls = '0':'x':(replicate (2*SIZEOF_HSPTR length ls) '0') ++ ls ++ rs instance Show (FunPtr a) where showsPrec p = showsPrec p . castFunPtrToPtr\end{code}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4