|
Foreign.Ptr | Portability | portable | Stability | provisional | Maintainer | ffi@haskell.org |
|
|
|
|
Contents |
- Data pointers
- Function pointers
|
|
Description |
The Ptr module provides typed pointers to foreign data. It is part
of the Foreign Function Interface (FFI) and will normally be
imported via the Foreign module.
|
|
Synopsis |
|
|
|
|
Data pointers |
|
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. | Instances | |
|
|
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 |
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) | Instances | |
|
|
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 |
|
freeHaskellFunPtr :: FunPtr a -> IO () |
|
Produced by Haddock version 0.4 |