Foreign.Ptr

| Haskell Core Libraries (base package) | Parent | Contents | Index
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 Ptr a
nullPtr :: Ptr a
castPtr :: Ptr a -> Ptr b
plusPtr :: Ptr a -> Int -> Ptr b
alignPtr :: Ptr a -> Int -> Ptr a
minusPtr :: Ptr a -> Ptr b -> Int
data FunPtr a
nullFunPtr :: FunPtr a
castFunPtr :: FunPtr a -> FunPtr b
castFunPtrToPtr :: FunPtr a -> Ptr b
castPtrToFunPtr :: Ptr a -> FunPtr b
freeHaskellFunPtr :: FunPtr a -> IO ()
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
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)
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
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)
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