Haskell Core LibrariesSource codeParentContents
Foreign.Ptr
Portabilityportable
Stabilitystable
Maintainerlibraries@haskell.org

Data pointers

data Ptr

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)

Function pointers

data FunPtr

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

castFunPtr :: FunPtr a -> FunPtr b

Casts a FunPtr to a FunPtr of a different type

castFunPtrToPtr :: FunPtr a -> Ptr b

Casts a FunPtr to a Ptr

castPtrToFunPtr :: Ptr a -> FunPtr b

Casts a Ptr to a FunPtr

Produced by Haddock version 0.0