Haskell Core Libraries (base package)ParentContentsIndex
GHC.Ptr
Portability non-portable (GHC Extensions)
Stability internal
Maintainer ffi@haskell.org
Description
The Ptr and FunPtr types and operations.
Synopsis
data FunPtr a = FunPtr Addr#
data Ptr a = Ptr Addr#
data FunPtr a = FunPtr Addr#
data Ptr a = Ptr Addr#
alignPtr :: Ptr a -> Int -> Ptr a
castFunPtr :: FunPtr a -> FunPtr b
castFunPtrToPtr :: FunPtr a -> Ptr b
castPtr :: Ptr a -> Ptr b
castPtrToFunPtr :: Ptr a -> FunPtr b
minusPtr :: Ptr a -> Ptr b -> Int
nullFunPtr :: FunPtr a
nullPtr :: Ptr a
plusPtr :: Ptr a -> Int -> Ptr b
Documentation
data FunPtr a

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)
Constructors
FunPtr Addr#
Instances
IArray UArray (FunPtr a)
(Ix ix) => Eq (UArray ix (FunPtr a))
(Ix ix) => Ord (UArray ix (FunPtr a))
MArray (STUArray s) (FunPtr a) (ST s)
IArray (IOToDiffArray IOUArray) (FunPtr a)
MArray IOUArray (FunPtr a) IO
Show (FunPtr a)
CCallable (FunPtr a)
CReturnable (FunPtr a)
Storable (FunPtr a)
data Ptr a

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.

Constructors
Ptr Addr#
Instances
IArray UArray (Ptr a)
(Ix ix) => Eq (UArray ix (Ptr a))
(Ix ix) => Ord (UArray ix (Ptr a))
MArray (STUArray s) (Ptr a) (ST s)
IArray (IOToDiffArray IOUArray) (Ptr a)
MArray IOUArray (Ptr a) IO
(Typeable a) => Typeable (Ptr a)
Show (Ptr a)
CCallable (Ptr a)
CReturnable (Ptr a)
Storable (Ptr a)
data FunPtr a

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)
Constructors
FunPtr Addr#
data Ptr a

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.

Constructors
Ptr Addr#
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.
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
castPtr :: Ptr a -> Ptr b
The castPtr function casts a pointer from one type to another.
castPtrToFunPtr :: Ptr a -> FunPtr b
Casts a Ptr to a FunPtr
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)
nullFunPtr :: FunPtr a
The constant nullFunPtr contains a distinguished value of Ptr that is not associated with a valid memory location
nullPtr :: Ptr a
The constant nullPtr contains a distinguished value of Ptr that is not associated with a valid memory location.
plusPtr :: Ptr a -> Int -> Ptr b
Advances the given address by the given offset in bytes.
Produced by Haddock version 0.3