File: node58.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 (180 lines) | stat: -rw-r--r-- 5,741 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
171
172
173
174
175
176
177
178
179
180
<!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>Enumerations</TITLE>
<META NAME="description" CONTENT="Enumerations">
<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="previous" HREF="node57.html">
<LINK REL="up" HREF="node54.html">
<LINK REL="next" HREF="node59.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html1484"
  HREF="node59.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html1478"
  HREF="node54.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html1474"
  HREF="node57.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html1480"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html1482"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html1485"
  HREF="node59.html">Arrays</A>
<B> Up:</B> <A NAME="tex2html1479"
  HREF="node54.html">Fundamental Types</A>
<B> Previous:</B> <A NAME="tex2html1475"
  HREF="node57.html">Opaque</A>
 &nbsp; <B>  <A NAME="tex2html1481"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html1483"
  HREF="node317.html">Index</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H2><A NAME="SECTION02434000000000000000"></A><A NAME="ssec:basics:fundamental:enums"></A><A NAME="2186"></A><A NAME="2187"></A>
<BR>
Enumerations
</H2>

<P>
An enumeration is typically used in programming
languages to specify a limited range of states
to enable dealing with them by names instead of hard-coded values.
For language interoperability purposes -- especially to 
support this concept on languages with no native support -- 
we've had to create specific rules for the integer values
associated with enumerated types.

<P>
<BR>
<PRE  CLASS="verbatim">package enumSample version 1.0 {

  // undefined integer values
  enum color { 
    red, orange, yellow, green, blue, violet
  };

  // completely defined integer values
  enum car { 
    /**
     * A sports car.
     */
    porsche = 911, 
    /**
     * A family car.
     */
    ford = 150, 
    /**
     * A luxury car.
     */
    mercedes = 550
  };

  // partially defined integer value
  enum number { 
    notZero,	// This non-doc comment will not be retained.
    notOne,
    zero=0,
    one=1,
    negOne=-1,
    notNeg
  };
}
</I></PRE></td></tr></table></blockquote>
<P>
Above is a sample of enumerations taken directly from 
our regression tests.  It defines a package <TT><I CLASS="slanted">enumSample</I></TT>
that contains three enumerations.  C/C++ developers
will find the syntax very familiar.
When defining an enumeration, the actual integer values
assigned can be undefined, completely defined, or
partially defined.

<P>
SIDL defines the following rules for adding integer
values to enumerated states that don't have a value
explicitly defined.

<OL>
<LI>Error if two states are explicitly assigned the same value
</LI>
<LI>Assign all explicit values to their named state.
</LI>
<LI>Assign smallest unused non-negative value to first 
	unassigned state in enumeration.
</LI>
<LI>Repeat 3 until all states have assigned (unique) values.
</LI>
</OL>

<P>
To verify the application of these rules, 
the <TT><I CLASS="slanted">enumSample.number</I></TT> enumeration
will have the following values assigned to
its states:  <TT><I CLASS="slanted">NotZero</I></TT>=2, <TT><I CLASS="slanted">NotOne</I></TT>=3,
<TT><I CLASS="slanted">zero</I></TT>=0; <TT><I CLASS="slanted">one</I></TT>=1, <TT><I CLASS="slanted">negOne</I></TT>=-1,
<TT><I CLASS="slanted">notNeg</I></TT>=4.

<P>

<P>

<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html1484"
  HREF="node59.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html1478"
  HREF="node54.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html1474"
  HREF="node57.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html1480"
  HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html1482"
  HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html1485"
  HREF="node59.html">Arrays</A>
<B> Up:</B> <A NAME="tex2html1479"
  HREF="node54.html">Fundamental Types</A>
<B> Previous:</B> <A NAME="tex2html1475"
  HREF="node57.html">Opaque</A>
 &nbsp; <B>  <A NAME="tex2html1481"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html1483"
  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>