File: AA-4-1-4.html

package info (click to toggle)
ada-reference-manual 20021112web-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge
  • size: 18,652 kB
  • ctags: 8,921
  • sloc: makefile: 52; sh: 20
file content (269 lines) | stat: -rw-r--r-- 21,012 bytes parent folder | download
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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
    <TITLE>AARM95 - Attributes</TITLE>
    <META NAME="Author" CONTENT="JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor">
    <META NAME="GENERATOR" CONTENT="Arm_Form.Exe, Ada Reference Manual generator">
    <STYLE type="text/css">
    DIV.paranum {position: absolute; font-family: Arial, Helvetica, sans-serif; left: 0.5 em; top: auto}
    TT {font-family: "Courier New", monospace}
    DT {display: compact}
    DIV.Normal {font-family: "Times New Roman", Times, serif; margin-bottom: 0.6em}
    DIV.Wide {font-family: "Times New Roman", Times, serif; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Annotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.WideAnnotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Index {font-family: "Times New Roman", Times, serif}
    DIV.SyntaxSummary {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Notes {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.NotesHeader {font-family: "Times New Roman", Times, serif; margin-left: 2.0em}
    DIV.SyntaxIndented {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Indented {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-bottom: 0.6em}
    DIV.CodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.SmallIndented {font-family: "Times New Roman", Times, serif; margin-left:  10.0em; margin-bottom: 0.6em}
    DIV.SmallCodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.Examples {font-family: "Courier New", monospace; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.SmallExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left: 7.5em; margin-bottom: 0.6em}
    DIV.IndentedExamples {font-family: "Courier New", monospace; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.SmallIndentedExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left:  15.0em; margin-bottom: 0.6em}
    UL.Bulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.IndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SyntaxIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.Hanging {font-family: "Times New Roman", Times, serif; margin-top: 0em; margin-bottom: 0.6em}
    DD.Hanging {margin-left: 6.0em}
    DL.IndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.IndentedHanging {margin-left: 2.0em}
    DL.HangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.HangingInBulleted {margin-left: 4.0em}
    DL.SmallHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallHanging {margin-left: 7.5em}
    DL.SmallIndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallIndentedHanging {margin-left: 2.0em}
    DL.SmallHangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallHangingInBulleted {margin-left: 5.0em}
    DL.Enumerated {font-family: "Times New Roman", Times, serif; margin-right: 0.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.Enumerated {margin-left: 2.0em}
    DL.SmallEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallEnumerated {margin-left: 2.5em}
    DL.NestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.SmallNestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    </STYLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFF0" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-4-1-3.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-4-2.html">Next</A></P>
<HR>
<H1> 4.1.4 Attributes</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;<A NAME="I2320"></A>[An <I>attribute</I> is a
characteristic of an entity that can be queried via an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
or a <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>.]
</DIV>

<H4 ALIGN=CENTER>Syntax</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">attribute_reference<A NAME="I2321"></A>
::= </FONT><A NAME="I2322"></A><FONT FACE="Arial, Helvetica">prefix</FONT>'<A NAME="I2323"></A><FONT FACE="Arial, Helvetica">attribute_designator</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">attribute_designator<A NAME="I2324"></A>
::= </FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I2325"></A><FONT FACE="Arial, Helvetica">identifier</FONT>[(<I>static_</I><A NAME="I2326"></A><FONT FACE="Arial, Helvetica">expression</FONT>)]<BR>
&nbsp;&nbsp;|&nbsp;Access&nbsp;|&nbsp;Delta&nbsp;|&nbsp;Digits</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">range_attribute_reference<A NAME="I2327"></A>
::= </FONT><A NAME="I2328"></A><FONT FACE="Arial, Helvetica">prefix</FONT>'<A NAME="I2329"></A><FONT FACE="Arial, Helvetica">range_attribute_designator</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">range_attribute_designator<A NAME="I2330"></A>
::= </FONT>Range[(<I>static_</I><A NAME="I2331"></A><FONT FACE="Arial, Helvetica">expression</FONT>)]</DIV>

<H4 ALIGN=CENTER>Name Resolution Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;In an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>,
if the <FONT FACE="Arial, Helvetica">attribute_designator</FONT> is for
an attribute defined for (at least some) objects of an access type, then
the <FONT FACE="Arial, Helvetica">prefix</FONT> is never interpreted
as an <FONT FACE="Arial, Helvetica">implicit_dereference</FONT>; otherwise
(and for all <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>s),
if the type of the <FONT FACE="Arial, Helvetica">name</FONT> within the
<FONT FACE="Arial, Helvetica">prefix</FONT> is of an access type, the
<FONT FACE="Arial, Helvetica">prefix</FONT> is interpreted as an <FONT FACE="Arial, Helvetica">implicit_dereference</FONT>.
Similarly, if the <FONT FACE="Arial, Helvetica">attribute_designator</FONT>
is for an attribute defined for (at least some) functions, then the <FONT FACE="Arial, Helvetica">prefix</FONT>
is never interpreted as a parameterless <FONT FACE="Arial, Helvetica">function_call</FONT>;
otherwise (and for all <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>s),
if the <FONT FACE="Arial, Helvetica">prefix</FONT> consists of a <FONT FACE="Arial, Helvetica">name</FONT>
that denotes a function, it is interpreted as a parameterless <FONT FACE="Arial, Helvetica">function_call</FONT>.
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>The first part
of this rule is essentially a &quot;preference&quot; against implicit
dereference, so that it is possible to ask for, say, 'Size of an access
object, without automatically getting the size of the object designated
by the access object. This rule applies to 'Access, 'Unchecked_Access,
'Size, and 'Address, and any other attributes that are defined for at
least some access objects.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The second part of this rule implies
that, for a parameterless function F, F'Address is the address of F,
whereas F'Size is the size of the anonymous constant returned by F.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6.c/1</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We normally talk in terms of expected
type or profile for name resolution rules, but we don't do this for attributes
because certain attributes are legal independent of the type or the profile
of the <U><FONT FACE="Arial, Helvetica">prefix</FONT></U><S>prefix</S>.
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;<A NAME="I2332"></A><A NAME="I2333"></A>The <FONT FACE="Arial, Helvetica">expression</FONT>,
if any, in an <FONT FACE="Arial, Helvetica">attribute_designator</FONT>
or <FONT FACE="Arial, Helvetica">range_attribute_designator</FONT> is
expected to be of any integer type. </DIV>

<H4 ALIGN=CENTER>Legality Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;The <FONT FACE="Arial, Helvetica">expression</FONT>,
if any, in an <FONT FACE="Arial, Helvetica">attribute_designator</FONT>
or <FONT FACE="Arial, Helvetica">range_attribute_designator</FONT> shall
be static. </DIV>

<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;An <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
denotes a value, an object, a subprogram, or some other kind of program
entity. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>The attributes
defined by the language are summarized in <A HREF="AA-K.html">Annex K</A>.
Implementations can define additional attributes. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;[A <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>
X'Range(N) is equivalent to the <FONT FACE="Arial, Helvetica">range</FONT>
X'First(N) .. X'Last(N), except that the <FONT FACE="Arial, Helvetica">prefix</FONT>
is only evaluated once. Similarly, X'Range is equivalent to X'First ..
X'Last, except that the <FONT FACE="Arial, Helvetica">prefix</FONT> is
only evaluated once.]</DIV>

<H4 ALIGN=CENTER>Dynamic Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I2334"></A><A NAME="I2335"></A>The evaluation
of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT> (or <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>)
consists of the evaluation of the <FONT FACE="Arial, Helvetica">prefix</FONT>.
</DIV>

<H4 ALIGN=CENTER>Implementation Permissions</H4>
<DIV Class="Paranum"><FONT SIZE=-2>12/1</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<I><A HREF="defect1.html#8652/0015">8652/0015</A></I>}
An implementation may provide implementation-defined attributes; the
<FONT FACE="Arial, Helvetica">identifier</FONT> for an implementation-defined
attribute shall differ from those of the language-defined attributes<U>
unless supplied for compatibility with a previous edition of this International
Standard</U>. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Implementation defined: </B>Implementation-defined
attributes.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>They cannot
be reserved words because reserved words are not legal identifiers.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The semantics of implementation-defined
attributes, and any associated rules, are, of course, implementation
defined. For example, the implementation defines whether a given implementation-defined
attribute can be used in a static expression.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.c.1/1</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>{<I><A HREF="defect1.html#8652/0015">8652/0015</A></I>}
<U>Implementations are allowed to support the Small attribute for floating
types, as this was defined in Ada 83, even though the name would conflict
with a language-defined attribute.</U> </FONT></DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>4&nbsp;&nbsp;Attributes are defined
throughout this International Standard, and are summarized in <A HREF="AA-K.html">Annex
K</A>.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14/1</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>5&nbsp;&nbsp;In general, the <FONT FACE="Arial, Helvetica">name</FONT>
in a <FONT FACE="Arial, Helvetica">prefix</FONT> of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
(or a <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>)
has to be resolved without using any context. However, in the case of
the Access attribute, the expected type for the <U><FONT FACE="Arial, Helvetica">prefix</FONT></U><S>prefix</S>
has to be a single access type, and if it is an access-to-subprogram
type (see <A HREF="AA-3-10-2.html">3.10.2</A>) then the resolution of
the <FONT FACE="Arial, Helvetica">name</FONT> can use the fact that the
profile of the callable entity denoted by the <FONT FACE="Arial, Helvetica">prefix</FONT>
has to be type conformant with the designated profile of the access type.
<A NAME="I2336"></A></FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Proof: </B>In the general case,
there is no ``expected type'' for the <FONT FACE="Arial, Helvetica">prefix</FONT>
of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>. In the
special case of 'Access, there is an ``expected profile'' for the <FONT FACE="Arial, Helvetica">prefix</FONT>.
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>'Access is a special
case, because without it, it would be very difficult to take 'Access
of an overloaded subprogram. </FONT></DIV>

<H4 ALIGN=CENTER>Examples</H4>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em">&nbsp;&nbsp;&nbsp;&nbsp;<I>Examples of
attributes:</I> </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Examples"><TT>Color'First&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;minimum&nbsp;value&nbsp;of&nbsp;the&nbsp;enumeration&nbsp;type&nbsp;Color&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-5-1.html">3.5.1</A>)</I><BR>
Rainbow'Base'First&nbsp;<I>--&nbsp;same&nbsp;as&nbsp;Color'First&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-5-1.html">3.5.1</A>)</I><BR>
Real'Digits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;precision&nbsp;of&nbsp;the&nbsp;type&nbsp;Real&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-5-7.html">3.5.7</A>)</I><BR>
Board'Last(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;upper&nbsp;bound&nbsp;of&nbsp;the&nbsp;second&nbsp;dimension&nbsp;of&nbsp;Board&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-6-1.html">3.6.1</A>)</I><BR>
Board'Range(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;index&nbsp;range&nbsp;of&nbsp;the&nbsp;first&nbsp;dimension&nbsp;of&nbsp;Board&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-6-1.html">3.6.1</A>)</I><BR>
Pool(K)'Terminated&nbsp;<I>--&nbsp;True&nbsp;if&nbsp;task&nbsp;Pool(K)&nbsp;is&nbsp;terminated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-9-1.html">9.1</A>)</I><BR>
Date'Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;number&nbsp;of&nbsp;bits&nbsp;for&nbsp;records&nbsp;of&nbsp;type&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-8.html">3.8</A>)</I><BR>
Message'Address&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;address&nbsp;of&nbsp;the&nbsp;record&nbsp;variable&nbsp;Message&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(see&nbsp;<A HREF="AA-3-7-1.html">3.7.1</A>)</I></TT></DIV>

<H4 ALIGN=CENTER>Extensions to Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><A NAME="I2337"></A>We now uniformly
treat X'Range as X'First..X'Last, allowing its use with scalar subtypes.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We allow any integer type in the
<I>static_</I><FONT FACE="Arial, Helvetica">expression</FONT> of an attribute
designator, not just a value of <I>universal_integer</I>. The preference
rules ensure upward compatibility. </FONT></DIV>

<H4 ALIGN=CENTER>Wording Changes from Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We use the syntactic category
<FONT FACE="Arial, Helvetica">attribute_reference</FONT> rather than
simply &quot;attribute&quot; to avoid confusing the name of something
with the thing itself.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The syntax rule for <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
now uses <FONT FACE="Arial, Helvetica">identifier</FONT> instead of <FONT FACE="Arial, Helvetica">simple_name</FONT>,
because attribute <FONT FACE="Arial, Helvetica">identifier</FONT>s are
not required to follow the normal visibility rules.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.e</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We now separate <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
from <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>,
and enumerate the reserved words that are legal attribute or range attribute
designators. We do this because <FONT FACE="Arial, Helvetica">identifier</FONT>
no longer includes reserved words.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.f</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The Ada 95 name resolution rules
are a bit more explicit than in Ada 83. The Ada 83 rule said that the
&quot;meaning of the prefix of an attribute must be determinable independently
of the attribute designator and independently of the fact that it is
the prefix of an attribute.&quot;  That isn't quite right since the meaning
even in Ada 83 embodies whether or not the prefix is interpreted as a
parameterless function call, and in Ada 95, it also embodies whether
or not the prefix is interpreted as an implicit_dereference. So the attribute
designator does make a difference -- just not much.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.g</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Note however that if the attribute
designator is Access, it makes a big difference in the interpretation
of the prefix (see <A HREF="AA-3-10-2.html">3.10.2</A>). </FONT></DIV>

<HR>
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-4-1-3.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-4-2.html">Next</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>