| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Foreign.Marshal.Utils
Description
Synopsis
- with :: Storable a => a -> (Ptr a -> IO b) -> IO b
- new :: Storable a => a -> IO (Ptr a)
- fromBool :: Num a => Bool -> a
- toBool :: Num a => a -> Bool
- maybeNew :: (a -> IO (Ptr a)) -> Maybe a -> IO (Ptr a)
- maybeWith :: (a -> (Ptr b -> IO c) -> IO c) -> Maybe a -> (Ptr b -> IO c) -> IO c
- maybePeek :: (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
- withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res
- copyBytes :: Ptr a -> Ptr a -> Int -> IO ()
- moveBytes :: Ptr a -> Ptr a -> Int -> IO ()
General marshalling utilities
Combined allocation and marshalling
with :: Storable a => a -> (Ptr a -> IO b) -> IO b #
with val f executes the computation f, passing as argument a pointer to a temporarily allocated
block of memory into which val has been marshalled (the combination of alloca and poke).
The memory is freed when f terminates (either normally or via an exception), so the pointer passed to
f must not be used after this.
new :: Storable a => a -> IO (Ptr a) #
Allocate a block of memory and marshal a value into it (the combination of malloc and poke). The
size of the area allocated is determined by the sizeOf method from the instance
of Storable for the appropriate type.
The memory may be deallocated using free or
finalizerFree when no longer required.
Marshalling of Boolean values (non-zero corresponds to True)
Marshalling of Maybe values
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)