Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2276

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Foreign.Marshal.Array</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Foreign-Marshal-Array.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">base-4.5.1.0: Basic libraries</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>portable</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Maintainer</th><td>ffi@haskell.org</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr></table><p class="caption">Foreign.Marshal.Array</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Marshalling arrays
</a><ul><li><a href="#g:2">Allocation
</a></li><li><a href="#g:3">Marshalling
</a></li><li><a href="#g:4">Combined allocation and marshalling
</a></li><li><a href="#g:5">Copying
</a></li><li><a href="#g:6">Finding the length
</a></li><li><a href="#g:7">Indexing
</a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Marshalling support: routines allocating, storing, and retrieving Haskell
 lists that are represented as arrays in the foreign language
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:mallocArray">mallocArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</li><li class="src short"><a href="#v:mallocArray0">mallocArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</li><li class="src short"><a href="#v:allocaArray">allocaArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</li><li class="src short"><a href="#v:allocaArray0">allocaArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</li><li class="src short"><a href="#v:reallocArray">reallocArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</li><li class="src short"><a href="#v:reallocArray0">reallocArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</li><li class="src short"><a href="#v:peekArray">peekArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> [a]</li><li class="src short"><a href="#v:peekArray0">peekArray0</a> :: (<a href="Foreign-Storable.html#t:Storable">Storable</a> a, <a href="Data-Eq.html#t:Eq">Eq</a> a) =&gt; a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> [a]</li><li class="src short"><a href="#v:pokeArray">pokeArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:pokeArray0">pokeArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:newArray">newArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</li><li class="src short"><a href="#v:newArray0">newArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</li><li class="src short"><a href="#v:withArray">withArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; [a] -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</li><li class="src short"><a href="#v:withArray0">withArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; [a] -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</li><li class="src short"><a href="#v:withArrayLen">withArrayLen</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; [a] -&gt; (<a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</li><li class="src short"><a href="#v:withArrayLen0">withArrayLen0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; [a] -&gt; (<a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</li><li class="src short"><a href="#v:copyArray">copyArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:moveArray">moveArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:lengthArray0">lengthArray0</a> :: (<a href="Foreign-Storable.html#t:Storable">Storable</a> a, <a href="Data-Eq.html#t:Eq">Eq</a> a) =&gt; a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:advancePtr">advancePtr</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a</li></ul></div><div id="interface"><h1 id="g:1">Marshalling arrays
</h1><h2 id="g:2">Allocation
</h2><div class="top"><p class="src"><a name="v:mallocArray" class="def">mallocArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</p><div class="doc"><p>Allocate storage for the given number of elements of a storable type
 (like <code><a href="Foreign-Marshal-Alloc.html#v:malloc">malloc</a></code>, but for multiple elements).
</p></div></div><div class="top"><p class="src"><a name="v:mallocArray0" class="def">mallocArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</p><div class="doc"><p>Like <code><a href="Foreign-Marshal-Array.html#v:mallocArray">mallocArray</a></code>, but add an extra position to hold a special
 termination element.
</p></div></div><div class="top"><p class="src"><a name="v:allocaArray" class="def">allocaArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</p><div class="doc"><p>Temporarily allocate space for the given number of elements
 (like <code><a href="Foreign-Marshal-Alloc.html#v:alloca">alloca</a></code>, but for multiple elements).
</p></div></div><div class="top"><p class="src"><a name="v:allocaArray0" class="def">allocaArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</p><div class="doc"><p>Like <code><a href="Foreign-Marshal-Array.html#v:allocaArray">allocaArray</a></code>, but add an extra position to hold a special
 termination element.
</p></div></div><div class="top"><p class="src"><a name="v:reallocArray" class="def">reallocArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</p><div class="doc"><p>Adjust the size of an array
</p></div></div><div class="top"><p class="src"><a name="v:reallocArray0" class="def">reallocArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</p><div class="doc"><p>Adjust the size of an array including an extra position for the end marker.
</p></div></div><h2 id="g:3">Marshalling
</h2><div class="top"><p class="src"><a name="v:peekArray" class="def">peekArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> [a]</p><div class="doc"><p>Convert an array of given length into a Haskell list.  The implementation
 is tail-recursive and so uses constant stack space.
</p></div></div><div class="top"><p class="src"><a name="v:peekArray0" class="def">peekArray0</a> :: (<a href="Foreign-Storable.html#t:Storable">Storable</a> a, <a href="Data-Eq.html#t:Eq">Eq</a> a) =&gt; a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> [a]</p><div class="doc"><p>Convert an array terminated by the given end marker into a Haskell list
</p></div></div><div class="top"><p class="src"><a name="v:pokeArray" class="def">pokeArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></p><div class="doc"><p>Write the list elements consecutive into memory
</p></div></div><div class="top"><p class="src"><a name="v:pokeArray0" class="def">pokeArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></p><div class="doc"><p>Write the list elements consecutive into memory and terminate them with the
 given marker element
</p></div></div><h2 id="g:4">Combined allocation and marshalling
</h2><div class="top"><p class="src"><a name="v:newArray" class="def">newArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</p><div class="doc"><p>Write a list of storable elements into a newly allocated, consecutive
 sequence of storable values
 (like <code><a href="Foreign-Marshal-Utils.html#v:new">new</a></code>, but for multiple elements).
</p></div></div><div class="top"><p class="src"><a name="v:newArray0" class="def">newArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; [a] -&gt; <a href="System-IO.html#t:IO">IO</a> (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a)</p><div class="doc"><p>Write a list of storable elements into a newly allocated, consecutive
 sequence of storable values, where the end is fixed by the given end marker
</p></div></div><div class="top"><p class="src"><a name="v:withArray" class="def">withArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; [a] -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</p><div class="doc"><p>Temporarily store a list of storable values in memory
 (like <code><a href="Foreign-Marshal-Utils.html#v:with">with</a></code>, but for multiple elements).
</p></div></div><div class="top"><p class="src"><a name="v:withArray0" class="def">withArray0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; [a] -&gt; (<a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</p><div class="doc"><p>Like <code><a href="Foreign-Marshal-Array.html#v:withArray">withArray</a></code>, but a terminator indicates where the array ends
</p></div></div><div class="top"><p class="src"><a name="v:withArrayLen" class="def">withArrayLen</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; [a] -&gt; (<a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</p><div class="doc"><p>Like <code><a href="Foreign-Marshal-Array.html#v:withArray">withArray</a></code>, but the action gets the number of values
 as an additional parameter
</p></div></div><div class="top"><p class="src"><a name="v:withArrayLen0" class="def">withArrayLen0</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; a -&gt; [a] -&gt; (<a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> b) -&gt; <a href="System-IO.html#t:IO">IO</a> b</p><div class="doc"><p>Like <code><a href="Foreign-Marshal-Array.html#v:withArrayLen">withArrayLen</a></code>, but a terminator indicates where the array ends
</p></div></div><h2 id="g:5">Copying
</h2><div class="doc"><p>(argument order: destination, source)
</p></div><div class="top"><p class="src"><a name="v:copyArray" class="def">copyArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></p><div class="doc"><p>Copy the given number of elements from the second array (source) into the
 first array (destination); the copied areas may <em>not</em> overlap
</p></div></div><div class="top"><p class="src"><a name="v:moveArray" class="def">moveArray</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="../ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></p><div class="doc"><p>Copy the given number of elements from the second array (source) into the
 first array (destination); the copied areas <em>may</em> overlap
</p></div></div><h2 id="g:6">Finding the length
</h2><div class="top"><p class="src"><a name="v:lengthArray0" class="def">lengthArray0</a> :: (<a href="Foreign-Storable.html#t:Storable">Storable</a> a, <a href="Data-Eq.html#t:Eq">Eq</a> a) =&gt; a -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="System-IO.html#t:IO">IO</a> <a href="Data-Int.html#t:Int">Int</a></p><div class="doc"><p>Return the number of elements in an array, excluding the terminator
</p></div></div><h2 id="g:7">Indexing
</h2><div class="top"><p class="src"><a name="v:advancePtr" class="def">advancePtr</a> :: <a href="Foreign-Storable.html#t:Storable">Storable</a> a =&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Data-Int.html#t:Int">Int</a> -&gt; <a href="Foreign-Ptr.html#t:Ptr">Ptr</a> a</p><div class="doc"><p>Advance a pointer into an array by the given number of elements
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>