1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>The C Macro API</TITLE>
<META NAME="description" CONTENT="The C Macro API">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="users_guide.css">
<LINK REL="next" HREF="node99.html">
<LINK REL="previous" HREF="node65.html">
<LINK REL="up" HREF="node59.html">
<LINK REL="next" HREF="node99.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html2114"
HREF="node99.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html2108"
HREF="node59.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html2102"
HREF="node97.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html2110"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html2112"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html2115"
HREF="node99.html">The C Data Structure</A>
<B> Up:</B> <A NAME="tex2html2109"
HREF="node59.html">Arrays</A>
<B> Previous:</B> <A NAME="tex2html2103"
HREF="node97.html">Function: first</A>
<B> <A NAME="tex2html2111"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html2113"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION02447000000000000000"></A><A NAME="3062"></A><A NAME="3063"></A>
<BR>
The C Macro API
</H2>
<P>
For all the SIDL basic types except string, there is a C macro
API for those who fear the function overhead of the C function API.
When efficiency is not a concern, I recommend using the function API,
but the C macro API is preferable to the direct access to the data structure.
The macro API is not available for arrays of strings, interfaces or objects
because the issues associated with memory and object reference management.
<P>
The macro API is very similar to the function API; however,
a single set of macros applies to all the supported array types.
The macro names are independent of the type of array you're accessing.
<P>
<BR>
<PRE CLASS="verbatim">sidlArrayDim(array)
</PRE></td></tr></table></blockquote><A NAME="3065"></A><A NAME="3066"></A>
Return the dimension of array.
<P>
<BR>
<PRE CLASS="verbatim">sidlLower(array,ind)
</PRE></td></tr></table></blockquote><A NAME="3068"></A><A NAME="3069"></A>
Return the lower bound on dimension ind.
<P>
<BR>
<PRE CLASS="verbatim">sidlUpper(array,ind)
</PRE></td></tr></table></blockquote><A NAME="3071"></A><A NAME="3072"></A>
Return the upper bound on dimension ind.
<P>
<BR>
<PRE CLASS="verbatim">sidlStride(array,ind)
</PRE></td></tr></table></blockquote><A NAME="3074"></A><A NAME="3075"></A>
Return the stride for dimension ind.
The stride is the offset between elements in a particular dimension.
It can be positive or negative. It is in terms of number of value
types (i.e., it's 1 means contiguous regardless of what data type).
<P>
<BR>
<PRE CLASS="verbatim">sidlArrayElem1(array, ind1)
sidlArrayElem2(array, ind1, ind2)
sidlArrayElem3(array, ind1, ind2, ind3)
sidlArrayElem4(array, ind1, ind2, ind3, ind4)
sidlArrayElem5(array, ind1, ind2, ind3, ind4, ind5)
sidlArrayElem6(array, ind1, ind2, ind3, ind4, ind5, ind6)
sidlArrayElem7(array, ind1, ind2, ind3, ind4, ind5, ind6, ind7)
</PRE></td></tr></table></blockquote><A NAME="3077"></A><A NAME="3078"></A>
Provide access to array elements to arrays of dimension 1-7. This
macro can appear on the left hand side of an assignment or on the
right hand side in an expression. These macros blindly assume that
the dimension and indices are correct.
<P>
<BR>
<PRE CLASS="verbatim">sidlArrayAddr1(array, ind1)
sidlArrayAddr2(array, ind1, ind2)
sidlArrayAddr3(array, ind1, ind2, ind3)
sidlArrayAddr4(array, ind1, ind2, ind3, ind4)
sidlArrayAddr5(array, ind1, ind2, ind3, ind4, ind5)
sidlArrayAddr6(array, ind1, ind2, ind3, ind4, ind5, ind6)
sidlArrayAddr7(array, ind1, ind2, ind3, ind4, ind5, ind6, ind7)
</PRE></td></tr></table></blockquote><A NAME="3080"></A><A NAME="3081"></A>
Return the address of elements in arrays of dimension 1-7. This
macro can appear on the left hand side of an assignment or on the
right hand side in an expression. These macros blindly assume that
the dimension and indices are correct.
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html2114"
HREF="node99.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html2108"
HREF="node59.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html2102"
HREF="node97.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html2110"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html2112"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html2115"
HREF="node99.html">The C Data Structure</A>
<B> Up:</B> <A NAME="tex2html2109"
HREF="node59.html">Arrays</A>
<B> Previous:</B> <A NAME="tex2html2103"
HREF="node97.html">Function: first</A>
<B> <A NAME="tex2html2111"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html2113"
HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>
|