A value of type Ptr a represents a pointer to an object, or an
array of objects, which may be marshalled to or from Haskell values
of type a.
The type a will normally be an instance of class Storable which provides the marshalling operations.
|nullPtr :: Ptr a|
The constant nullPtr contains a distinguished value of Ptr that is not associated with a valid memory location.
|castPtr :: Ptr a -> Ptr b|
The castPtr function casts a pointer from one type to another.
|plusPtr :: Ptr a -> Int -> Ptr b|
Advances the given address by the given offset in bytes.
|alignPtr :: Ptr a -> Int -> Ptr a|
Given an arbitrary address and an alignment constraint,
alignPtr yields the next higher address that fulfills the
alignment constraint. An alignment constraint x is fulfilled by any address divisible by x. This operation is idempotent.
|minusPtr :: Ptr a -> Ptr b -> Int|
Computes the offset required to get from the first to the second argument. We have p2 == p1 `plusPtr` (p2 `minusPtr` p1)
A value of type FunPtr a is a pointer to a piece of code. It
may be the pointer to a C function or to a Haskell function created
using foreign export dynamic. A foreign export
dynamic should normally be declared to produce a
FunPtr of the correct type. For example:
type Compare = Int -> Int -> Bool
foreign export dynamic mkCompare :: Compare -> IO (FunPtr Compare)
|nullFunPtr :: FunPtr a|
The constant nullFunPtr contains a
distinguished value of Ptr that is not associated with a valid memory location