
Foreign.Marshal.Utils  Portability  portable  Stability  provisional  Maintainer  ffi@haskell.org 





Description 
Utilities for primitive marshaling


Synopsis 




General marshalling utilities 

Combined allocation and marshalling 

with :: Storable a => a > (Ptr a > IO b) > IO b 
Allocate temporary storage for a value and marshal it into this storage
 see the life time constraints imposed by alloca


new :: Storable a => a > IO (Ptr a) 
Allocate storage for a value and marshal it into this storage


Marshalling of Boolean values (nonzero corresponds to True) 

fromBool :: Num a => Bool > a 
Convert a Haskell Bool to its numeric representation


toBool :: Num a => a > Bool 
Convert a Boolean in numeric representation to a Haskell value


Marshalling of Maybe values 

maybeNew :: (a > IO (Ptr a)) > Maybe a > IO (Ptr a) 
Allocate storage and marshall a storable value wrapped into a Maybe


maybeWith :: (a > (Ptr b > IO c) > IO c) > Maybe a > (Ptr b > IO c) > IO c 
Converts a withXXX combinator into one marshalling a value wrapped into a
Maybe


maybePeek :: (Ptr a > IO b) > Ptr a > IO (Maybe b) 
Convert a peek combinator into a one returning Nothing if applied to a
nullPtr


Marshalling lists of storable objects 

withMany :: (a > (b > res) > res) > [a] > ([b] > res) > res 
Replicates a withXXX combinator over a list of objects, yielding a list of
marshalled objects


Haskellish interface to memcpy and memmove 

(argument order: destination, source)


copyBytes :: Ptr a > Ptr a > Int > IO () 
Copies the given number of bytes from the second area (source) into the
first (destination); the copied areas may not overlap


moveBytes :: Ptr a > Ptr a > Int > IO () 
Copies the given number of elements from the second area (source) into the
first (destination); the copied areas may overlap


DEPRECATED FUNCTIONS (don't use; they may disappear at any time) 

withObject :: Storable a => a > (Ptr a > IO b) > IO b 

Produced by Haddock version 0.6 