File: node98.html

package info (click to toggle)
babel 0.10.2-1
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 43,932 kB
  • ctags: 29,707
  • sloc: java: 74,695; ansic: 73,142; cpp: 40,649; sh: 18,411; f90: 10,062; fortran: 6,727; python: 6,406; makefile: 3,866; xml: 118; perl: 48
file content (170 lines) | stat: -rw-r--r-- 6,419 bytes parent folder | download | duplicates (2)
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>
 &nbsp; <B>  <A NAME="tex2html2111"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <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>
 &nbsp; <B>  <A NAME="tex2html2111"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <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>