123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
- <html>
- <!-- Created on December 10, 2012 by texi2html 1.82
- texi2html was written by:
- Lionel Cons <[email protected]> (original author)
- Karl Berry <[email protected]>
- Olaf Bachmann <[email protected]>
- and many others.
- Maintained by: Many creative people.
- Send bugs and suggestions to <[email protected]>
- -->
- <head>
- <title>avram - a virtual machine code interpreter: 3.1.4.2 One dimensional arrays</title>
- <meta name="description" content="avram - a virtual machine code interpreter: 3.1.4.2 One dimensional arrays">
- <meta name="keywords" content="avram - a virtual machine code interpreter: 3.1.4.2 One dimensional arrays">
- <meta name="resource-type" content="document">
- <meta name="distribution" content="global">
- <meta name="Generator" content="texi2html 1.82">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <style type="text/css">
- <!--
- a.summary-letter {text-decoration: none}
- blockquote.smallquotation {font-size: smaller}
- pre.display {font-family: serif}
- pre.format {font-family: serif}
- pre.menu-comment {font-family: serif}
- pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: serif; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: serif; font-size: smaller}
- pre.smalllisp {font-size: smaller}
- span.roman {font-family:serif; font-weight:normal;}
- span.sansserif {font-family:sans-serif; font-weight:normal;}
- ul.toc {list-style: none}
- -->
- </style>
- </head>
- <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
- <a name="One-dimensional-arrays"></a>
- <table cellpadding="1" cellspacing="1" border="0">
- <tr><td valign="middle" align="left">[<a href="Primitive-types.html#Primitive-types" title="Previous section in reading order"> < </a>]</td>
- <td valign="middle" align="left">[<a href="Two-dimensional-arrays.html#Two-dimensional-arrays" title="Next section in reading order"> > </a>]</td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Beginning of this chapter or previous chapter"> << </a>]</td>
- <td valign="middle" align="left">[<a href="Type-Conversions.html#Type-Conversions" title="Up section"> Up </a>]</td>
- <td valign="middle" align="left">[<a href="Character-Table.html#Character-Table" title="Next chapter"> >> </a>]</td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
- <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
- <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
- <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
- </tr></table>
- <hr size="1">
- <a name="One-dimensional-arrays-1"></a>
- <h4 class="subsubsection">3.1.4.2 One dimensional arrays</h4>
- <p>A couple of functions declared in ‘<tt>matcon.h</tt>’ are concerned mainly
- with one dimensional arrays or vectors. They have been used for
- <a name="index-arrays"></a>
- vectors of double precision and complex numbers, but are applicable to
- <a name="index-vectors"></a>
- any base type that is contiguous and of a fixed size.
- </p>
- <p>The motivation for these functions is to enable a developer to present
- an API to virtual code applications wherein external library functions
- operating natively on one dimensional arrays of numbers are seen from
- the virtual side to operate on lists of numbers. Lists are the
- preferred container for interoperability with virtual code
- applications.
- </p>
- <dl>
- <dt><a name="index-_002aavm_005fvector_005fof_005flist"></a><u>Function:</u> void <b>*avm_vector_of_list</b><i> (list <var>operand</var>, size_t <var>item_size</var>, list *<var>message</var>, int *<var>fault</var>)</i></dt>
- <dd><p>This function calls <code>avm_value_of_list</code> (<a href="Primitive-types.html#Primitive-types">Primitive types</a>)
- for each item of the <var>operand</var> and puts all the values together
- into one contiguous block, whose address is returned.
- </p>
- <p>The given <var>item_size</var> is required to be the lengths of the items,
- all necessarily equal, and is required only for validation. For
- example, <var>item_size</var> is 8 for a list of double precision numbers,
- because they occupy 8 bytes each and are represented as lists of length 8.
- </p>
- <p>The total number of bytes allocated is the product of <var>item_size</var>
- and the length of the <var>operand</var>. Unlike the case of
- <code>avm_value_of_list</code> (<a href="Primitive-types.html#Primitive-types">Primitive types</a>), the result returned
- by this function should be explicitly freed by the caller when no
- longer needed.
- </p>
- <p>Any errors such as insufficient memory cause the integer referenced by
- <var>fault</var> to be assigned a non-zero value and the <var>message</var> to
- be assigned an error message represented as a list of strings. An
- error message of <code><'bad vector specification'></code> is possible in
- the case of an empty <var>operand</var> or one whose item lengths don’t
- match the given <var>item_size</var>. Error messages caused by
- <code>avm_value_of_list</code> can also be generated by this function. Any
- non-empty error message should be reclaimed by the caller using
- <code>avm_dispose</code> (<a href="Simple-Operations.html#Simple-Operations">Simple Operations</a>). If an error occurs, a
- <code>NULL</code> pointer is returned.
- </p></dd></dl>
- <dl>
- <dt><a name="index-avm_005flist_005fof_005fvector"></a><u>Function:</u> list <b>avm_list_of_vector</b><i> (void *<var>vector</var>, int <var>num_items</var>, size_t <var>item_size</var>, int *<var>fault</var>)</i></dt>
- <dd><p>This function takes it on faith that an array of dimension
- <var>num_items</var> in which each item occupies <var>item_size</var> bytes
- begins at the address given by <var>vector</var>. A list representation of
- each item in the array is constructed by the function
- <code>avm_list_of_value</code> (<a href="Primitive-types.html#Primitive-types">Primitive types</a>), and a list of all of
- the lists thus obtained in order of their position in the array is
- returned.
- </p>
- <p>In the event of any errors caused by <code>avm_list_of_value</code> or
- errors due to insufficient memory, the error message is returned as
- the function result, and the integer referenced by <var>fault</var> is
- assigned a non-zero value. The error message is in the form of a list
- of character string representations. A segmentation fault is possible
- <a name="index-segmentation-fault-3"></a>
- if <var>vector</var> is not a valid pointer or if the array size implied by
- misspecified values of <var>num_items</var> and <var>item_size</var>
- exceeds its actual size.
- </p></dd></dl>
- <hr size="1">
- <table cellpadding="1" cellspacing="1" border="0">
- <tr><td valign="middle" align="left">[<a href="Primitive-types.html#Primitive-types" title="Previous section in reading order"> < </a>]</td>
- <td valign="middle" align="left">[<a href="Two-dimensional-arrays.html#Two-dimensional-arrays" title="Next section in reading order"> > </a>]</td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Beginning of this chapter or previous chapter"> << </a>]</td>
- <td valign="middle" align="left">[<a href="Type-Conversions.html#Type-Conversions" title="Up section"> Up </a>]</td>
- <td valign="middle" align="left">[<a href="Character-Table.html#Character-Table" title="Next chapter"> >> </a>]</td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left"> </td>
- <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
- <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
- <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
- <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
- </tr></table>
- <p>
- <font size="-1">
- This document was generated on <i>December 10, 2012</i> using <a href="http://www.nongnu.org/texi2html/"><i>texi2html 1.82</i></a>.
- </font>
- <br>
- </p>
- </body>
- </html>
|