Contents Index Previous Next
Annex K
(informative)
Language-Defined Attributes
1
{attribute} This
annex summarizes the definitions given elsewhere of the language-defined
attributes.
2
- P'Access
-
For a prefix P that denotes a subprogram:
3
- P'Access yields an access value that designates
the subprogram denoted by P. The type of P'Access is an access-to-subprogram
type (S), as determined by the expected type. See 3.10.2.
4
- X'Access
-
For a prefix X that denotes an aliased
view of an object:
5
- X'Access yields an access value that designates
the object denoted by X. The type of X'Access is an access-to-object
type, as determined by the expected type. The expected type shall be
a general access type. See 3.10.2.
6/1
- X'Address
-
For a prefix
prefix
X that denotes an object, program unit, or label:
7
- Denotes the address of the first of the storage
elements allocated to X. For a program unit or label, this value refers
to the machine code associated with the corresponding body or statement.
The value of this attribute is of type System.Address. See 13.3.
8
- S'Adjacent
-
For every subtype S of a floating point type T:
9
- S'Adjacent denotes a function with the following
specification:
10
function S'Adjacent (X, Towards : T)
return T
11
- {Constraint_Error (raised by failure
of run-time check)} If Towards
= X, the function yields X; otherwise, it yields the
machine number of the type T adjacent to X in the direction
of Towards, if that machine number exists. {Range_Check
[partial]} {check, language-defined
(Range_Check)} If the result would be
outside the base range of S, Constraint_Error is raised. When T'Signed_Zeros
is True, a zero result has the sign of X. When Towards
is zero, its sign has no bearing on the result. See A.5.3.
12
- S'Aft
-
For every fixed point subtype S:
13
- S'Aft yields the number of decimal digits needed
after the decimal point to accommodate the delta of the subtype
S, unless the delta of the subtype S is greater than 0.1, in which
case the attribute yields the value one. (S'Aft is the smallest positive
integer N for which (10**N)*S'Delta is greater than or equal to one.)
The value of this attribute is of the type universal_integer.
See 3.5.10.
14/1
- X'Alignment
-
For a prefix
prefix
X that denotes a subtype or object:
15
- The Address of an object that is allocated under
control of the implementation is an integral multiple of the Alignment
of the object (that is, the Address modulo the Alignment is zero). The
offset of a record component is a multiple of the Alignment of the component.
For an object that is not allocated under control of the implementation
(that is, one that is imported, that is allocated by a user-defined allocator,
whose Address has been specified, or is designated by an access value
returned by an instance of Unchecked_Conversion), the implementation
may assume that the Address is an integral multiple of its Alignment.
The implementation shall not assume a stricter alignment.
16
- The value of this attribute is of type universal_integer,
and nonnegative; zero means that the object is not necessarily aligned
on a storage element boundary. See 13.3.
17
- S'Base
-
For every scalar subtype S:
18
- S'Base denotes an unconstrained subtype of the type
of S. This unconstrained subtype is called the base subtype of
the type. See 3.5.
19
- S'Bit_Order
-
For every specific record subtype S:
20
- Denotes the bit ordering for the type of S. The
value of this attribute is of type System.Bit_Order. See 13.5.3.
21/1
- P'Body_Version
-
For a prefix
prefix
P that statically denotes a program unit:
22
- Yields a value of the predefined type String that
identifies the version of the compilation unit that contains the body
(but not any subunits) of the program unit. See E.3.
23
- T'Callable
-
For a prefix T that is of a task
type (after any implicit dereference):
24
- Yields the value True when the task denoted by T
is callable, and False otherwise; See 9.9.
25
- E'Caller
-
For a prefix E that denotes an entry_declaration:
26
- Yields a value of the type Task_ID that identifies
the task whose call is now being serviced. Use of this attribute is allowed
only inside an entry_body or accept_statement
corresponding to the entry_declaration
denoted by E. See C.7.1.
27
- S'Ceiling
-
For every subtype S of a floating point type T:
28
- S'Ceiling denotes a function with the following
specification:
29
function S'Ceiling (X : T)
return T
30
- The function yields the value Ceiling(X),
i.e., the smallest (most negative) integral value greater than or equal
to X. When X is zero, the result has the sign of X;
a zero result otherwise has a negative sign when S'Signed_Zeros is True.
See A.5.3.
31
- S'Class
-
For every subtype S of an untagged private type whose full view is tagged:
32
- Denotes the class-wide subtype corresponding to
the full view of S. This attribute is allowed only from the beginning
of the private part in which the full view is declared, until the declaration
of the full view. After the full view, the Class attribute of the full
view can be used. See 7.3.1.
33
- S'Class
-
For every subtype S of a tagged type T (specific or class-wide):
34
- S'Class denotes a subtype of the class-wide type
(called T'Class in this International Standard) for the class
rooted at T (or if S already denotes a class-wide subtype, then
S'Class is the same as S).
35
- {unconstrained (subtype)}
{constrained (subtype)}
S'Class is unconstrained. However, if S is constrained,
then the values of S'Class are only those that when converted to the
type T belong to S. See 3.9.
36/1
- X'Component_Size
-
For a prefix
prefix
X that denotes an array subtype or array object (after any implicit dereference):
37
- Denotes the size in bits of components of the type
of X. The value of this attribute is of type universal_integer.
See 13.3.
38
- S'Compose
-
For every subtype S of a floating point type T:
39
- S'Compose denotes a function with the following
specification:
40
function S'Compose (Fraction : T;
Exponent : universal_integer)
return T
41
- {Constraint_Error (raised by failure
of run-time check)} Let v be the
value Fraction · T'Machine_RadixExponent-k,
where k is the normalized exponent of Fraction. If v
is a machine number of the type T, or if |v| >= T'Model_Small,
the function yields v; otherwise, it yields either one of the
machine numbers of the type T adjacent to v. {Range_Check
[partial]} {check, language-defined
(Range_Check)} Constraint_Error is optionally
raised if v is outside the base range of S. A zero result has
the sign of Fraction when S'Signed_Zeros is True. See A.5.3.
42
- A'Constrained
-
For a prefix A that is of a discriminated
type (after any implicit dereference):
43
- Yields the value True if A denotes a constant, a
value, or a constrained variable, and False otherwise. See 3.7.2.
44
- S'Copy_Sign
-
For every subtype S of a floating point type T:
45
- S'Copy_Sign denotes a function with the following
specification:
46
function S'Copy_Sign (Value, Sign : T)
return T
47
- {Constraint_Error (raised by failure
of run-time check)} If the value of Value
is nonzero, the function yields a result whose magnitude is that of Value
and whose sign is that of Sign; otherwise, it yields the value
zero. {Range_Check [partial]} {check,
language-defined (Range_Check)} Constraint_Error
is optionally raised if the result is outside the base range of S. A
zero result has the sign of Sign when S'Signed_Zeros is True.
See A.5.3.
48
- E'Count
-
For a prefix E that denotes an entry
of a task or protected unit:
49
- Yields the number of calls presently queued on the
entry E of the current instance of the unit. The value of this attribute
is of the type universal_integer. See 9.9.
50/1
- S'Definite
-
For a prefix
prefix
S that denotes a formal indefinite subtype:
51
- S'Definite yields True if the actual subtype corresponding
to S is definite; otherwise it yields False. The value of this attribute
is of the predefined type Boolean. See 12.5.1.
52
- S'Delta
-
For every fixed point subtype S:
53
- S'Delta denotes the delta of the fixed point
subtype S. The value of this attribute is of the type universal_real.
See 3.5.10.
54
- S'Denorm
-
For every subtype S of a floating point type T:
55
- Yields the value True if every value expressible
in the form
± mantissa · T'Machine_RadixT'Machine_Emin
where mantissa is a nonzero T'Machine_Mantissa-digit fraction
in the number base T'Machine_Radix, the first digit of which is zero,
is a machine number (see 3.5.7) of the type T;
yields the value False otherwise. The value of this attribute is of the predefined
type Boolean. See A.5.3.
56
- S'Digits
-
For every decimal fixed point subtype S:
57
- S'Digits denotes the digits of the decimal
fixed point subtype S, which corresponds to the number of decimal digits
that are representable in objects of the subtype. The value of this attribute
is of the type universal_integer. See 3.5.10.
58
- S'Digits
-
For every floating point subtype S:
59
- S'Digits denotes the requested decimal precision
for the subtype S. The value of this attribute is of the type universal_integer.
See 3.5.8.
60
- S'Exponent
-
For every subtype S of a floating point type T:
61
- S'Exponent denotes a function with the following
specification:
62
function S'Exponent (X : T)
return universal_integer
63
- The function yields the normalized exponent of X.
See A.5.3.
64
- S'External_Tag
-
For every subtype S of a tagged type T (specific or class-wide):
65
- {External_Tag clause} {specifiable
(of External_Tag for a tagged type) [partial]} S'External_Tag
denotes an external string representation for S'Tag; it is of the predefined
type String. External_Tag may be specified for a specific tagged type via
an attribute_definition_clause; the expression
of such a clause shall be static. The default external tag representation
is implementation defined. See 3.9.2 and 13.13.2.
See 13.3.
66/1
- A'First
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
67
- A'First denotes the lower bound of the first index
range; its type is the corresponding index type. See 3.6.2.
68
- S'First
-
For every scalar subtype S:
69
- S'First denotes the lower bound of the range of
S. The value of this attribute is of the type of S. See 3.5.
70/1
- A'First(N)
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
71
- A'First(N) denotes the lower bound of the N-th index
range; its type is the corresponding index type. See 3.6.2.
72
- R.C'First_Bit
-
For a component C of a composite, non-array object R:
73
- Denotes the offset, from the start of the first
of the storage elements occupied by C, of the first bit occupied by C.
This offset is measured in bits. The first bit of a storage element is
numbered zero. The value of this attribute is of the type universal_integer.
See 13.5.2.
74
- S'Floor
-
For every subtype S of a floating point type T:
75
- S'Floor denotes a function with the following specification:
76
function S'Floor (X : T)
return T
77
- The function yields the value Floor(X),
i.e., the largest (most positive) integral value less than or equal to
X. When X is zero, the result has the sign of X;
a zero result otherwise has a positive sign. See A.5.3.
78
- S'Fore
-
For every fixed point subtype S:
79
- S'Fore yields the minimum number of characters needed
before the decimal point for the decimal representation of any value
of the subtype S, assuming that the representation does not include an
exponent, but includes a one-character prefix that is either a minus
sign or a space. (This minimum number does not include superfluous zeros
or underlines, and is at least 2.) The value of this attribute is of
the type universal_integer. See 3.5.10.
80
- S'Fraction
-
For every subtype S of a floating point type T:
81
- S'Fraction denotes a function with the following
specification:
82
function S'Fraction (X : T)
return T
83
- The function yields the value X ·
T'Machine_Radix-k,
where k is the normalized exponent of X. A zero result,
which can only occur when X is zero, has the sign of X.
See A.5.3.
84
- T'Identity
-
For a prefix T that is of a task
type (after any implicit dereference):
85
- Yields a value of the type Task_ID that identifies
the task denoted by T. See C.7.1.
86/1
- E'Identity
-
For a prefix
prefix
E that denotes an exception:
87
- E'Identity returns the unique identity of the exception.
The type of this attribute is Exception_Id. See 11.4.1.
88
- S'Image
-
For every scalar subtype S:
89
- S'Image denotes a function with the following specification:
90
function S'Image(Arg : S'Base)
return String
91
- The function returns an image of the value of Arg
as a String. See 3.5.
92
- S'Class'Input
-
For every subtype S'Class of a class-wide type T'Class:
93
- S'Class'Input denotes a function with the following
specification:
94
function S'Class'Input(
Stream : access Ada.Streams.Root_Stream_Type'Class)
return T'Class
95
- First reads the external tag from Stream and determines
the corresponding internal tag (by calling Tags.Internal_Tag(String'Input(Stream))
-- see 3.9) and then dispatches to the subprogram
denoted by the Input attribute of the specific type identified by the internal
tag; returns that result. See 13.13.2.
96
- S'Input
-
For every subtype S of a specific type T:
97
- S'Input denotes a function with the following specification:
98
function S'Input(
Stream : access Ada.Streams.Root_Stream_Type'Class)
return T
99
- S'Input reads and returns one value from Stream,
using any bounds or discriminants written by a corresponding S'Output
to determine how much to read. See 13.13.2.
100/1
- A'Last
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
101
- A'Last denotes the upper bound of the first index
range; its type is the corresponding index type. See 3.6.2.
102
- S'Last
-
For every scalar subtype S:
103
- S'Last denotes the upper bound of the range of S.
The value of this attribute is of the type of S. See 3.5.
104/1
- A'Last(N)
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
105
- A'Last(N) denotes the upper bound of the N-th index
range; its type is the corresponding index type. See 3.6.2.
106
- R.C'Last_Bit
-
For a component C of a composite, non-array object R:
107
- Denotes the offset, from the start of the first
of the storage elements occupied by C, of the last bit occupied by C.
This offset is measured in bits. The value of this attribute is of the
type universal_integer. See 13.5.2.
108
- S'Leading_Part
-
For every subtype S of a floating point type T:
109
- S'Leading_Part denotes a function with the following
specification:
110
function S'Leading_Part (X : T;
Radix_Digits : universal_integer)
return T
111
- Let v be the value T'Machine_Radixk-Radix_Digits,
where k is the normalized exponent of X. The function yields
the value
112
- Floor(X/v) · v, when
X is nonnegative and Radix_Digits is positive;
113
- Ceiling(X/v) · v, when
X is negative and Radix_Digits is positive.
114
- {Constraint_Error (raised by failure
of run-time check)} {Range_Check
[partial]} {check, language-defined
(Range_Check)} Constraint_Error is raised
when Radix_Digits is zero or negative. A zero result, which can
only occur when X is zero, has the sign of X. See A.5.3.
115/1
- A'Length
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
116
- A'Length denotes the number of values of the first
index range (zero for a null range); its type is universal_integer.
See 3.6.2.
117/1
- A'Length(N)
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
118
- A'Length(N) denotes the number of values of the
N-th index range (zero for a null range); its type is universal_integer.
See 3.6.2.
119
- S'Machine
-
For every subtype S of a floating point type T:
120
- S'Machine denotes a function with the following
specification:
121
function S'Machine (X : T)
return T
122
- {Constraint_Error (raised by failure
of run-time check)} If X is a machine
number of the type T, the function yields X; otherwise,
it yields the value obtained by rounding or truncating X to either
one of the adjacent machine numbers of the type T. {Range_Check
[partial]} {check, language-defined
(Range_Check)} Constraint_Error is raised
if rounding or truncating X to the precision of the machine numbers
results in a value outside the base range of S. A zero result has the
sign of X when S'Signed_Zeros is True. See A.5.3.
123
- S'Machine_Emax
-
For every subtype S of a floating point type T:
124
- Yields the largest (most positive) value of exponent
such that every value expressible in the canonical form (for the type T),
having a mantissa of T'Machine_Mantissa digits, is a machine
number (see 3.5.7) of the type T. This
attribute yields a value of the type universal_integer. See A.5.3.
125
- S'Machine_Emin
-
For every subtype S of a floating point type T:
126
- Yields the smallest (most negative) value of exponent
such that every value expressible in the canonical form (for the type T),
having a mantissa of T'Machine_Mantissa digits, is a machine
number (see 3.5.7) of the type T. This
attribute yields a value of the type universal_integer. See A.5.3.
127
- S'Machine_Mantissa
-
For every subtype S of a floating point type T:
128
- Yields the largest value of p such that every value
expressible in the canonical form (for the type T), having a p-digit
mantissa and an exponent between T'Machine_Emin and T'Machine_Emax,
is a machine number (see 3.5.7) of the type T.
This attribute yields a value of the type universal_integer. See A.5.3.
129
- S'Machine_Overflows
-
For every subtype S of a fixed point type T:
130
- Yields the value True if overflow and divide-by-zero
are detected and reported by raising Constraint_Error for every predefined
operation that yields a result of the type T; yields the value
False otherwise. The value of this attribute is of the predefined type
Boolean. See A.5.4.
131
- S'Machine_Overflows
-
For every subtype S of a floating point type T:
132
- Yields the value True if overflow and divide-by-zero
are detected and reported by raising Constraint_Error for every predefined
operation that yields a result of the type T; yields the value
False otherwise. The value of this attribute is of the predefined type
Boolean. See A.5.3.
133
- S'Machine_Radix
-
For every subtype S of a fixed point type T:
134
- Yields the radix of the hardware representation
of the type T. The value of this attribute is of the type universal_integer.
See A.5.4.
135
- S'Machine_Radix
-
For every subtype S of a floating point type T:
136
- Yields the radix of the hardware representation
of the type T. The value of this attribute is of the type universal_integer.
See A.5.3.
137
- S'Machine_Rounds
-
For every subtype S of a fixed point type T:
138
- Yields the value True if rounding is performed on
inexact results of every predefined operation that yields a result of
the type T; yields the value False otherwise. The value of this
attribute is of the predefined type Boolean. See A.5.4.
139
- S'Machine_Rounds
-
For every subtype S of a floating point type T:
140
- Yields the value True if rounding is performed on
inexact results of every predefined operation that yields a result of
the type T; yields the value False otherwise. The value of this
attribute is of the predefined type Boolean. See A.5.3.
141
- S'Max
-
For every scalar subtype S:
142
- S'Max denotes a function with the following specification:
143
function S'Max(Left, Right : S'Base)
return S'Base
144
- The function returns the greater of the values of
the two parameters. See 3.5.
145
- S'Max_Size_In_Storage_Elements
-
For every subtype S:
146
- Denotes the maximum value for Size_In_Storage_Elements
that will be requested via Allocate for an access type whose designated
subtype is S. The value of this attribute is of type universal_integer.
See 13.11.1.
147
- S'Min
-
For every scalar subtype S:
148
- S'Min denotes a function with the following specification:
149
function S'Min(Left, Right : S'Base)
return S'Base
150
- The function returns the lesser of the values of
the two parameters. See 3.5.
151
- S'Model
-
For every subtype S of a floating point type T:
152
- S'Model denotes a function with the following specification:
153
function S'Model (X : T)
return T
154
- If the Numerics Annex is not supported, the meaning of
this attribute is implementation defined; see G.2.2
for the definition that applies to implementations supporting the Numerics
Annex. See A.5.3.
155
- S'Model_Emin
-
For every subtype S of a floating point type T:
156
- If the Numerics Annex is not supported, this attribute
yields an implementation defined value that is greater than or equal to the
value of T'Machine_Emin. See G.2.2 for
further requirements that apply to implementations supporting the Numerics
Annex. The value of this attribute is of the type universal_integer.
See A.5.3.
157
- S'Model_Epsilon
-
For every subtype S of a floating point type T:
158
- Yields the value T'Machine_Radix1
- T'Model_Mantissa. The value of this attribute
is of the type universal_real. See A.5.3.
159
- S'Model_Mantissa
-
For every subtype S of a floating point type T:
160
- If the Numerics Annex is not supported, this attribute
yields an implementation defined value that is greater than or equal to Ceiling(d
· log(10) / log(T'Machine_Radix)) + 1, where d is the
requested decimal precision of T, and less than or equal to the value
of T'Machine_Mantissa. See G.2.2 for further
requirements that apply to implementations supporting the Numerics Annex.
The value of this attribute is of the type universal_integer. See A.5.3.
161
- S'Model_Small
-
For every subtype S of a floating point type T:
162
- Yields the value T'Machine_RadixT'Model_Emin
- 1. The value of this attribute is of the type universal_real.
See A.5.3.
163
- S'Modulus
-
For every modular subtype S:
164
- S'Modulus yields the modulus of the type of S, as
a value of the type universal_integer. See 3.5.4.
165
- S'Class'Output
-
For every subtype S'Class of a class-wide type T'Class:
166
- S'Class'Output denotes a procedure with the following
specification:
167
procedure S'Class'Output(
Stream : access Ada.Streams.Root_Stream_Type'Class;
Item : in T'Class)
168
- First writes the external tag of Item to Stream
(by calling String'Output(Tags.External_Tag(Item'Tag) -- see 3.9)
and then dispatches to the subprogram denoted by the Output attribute of the
specific type identified by the tag. See 13.13.2.
169
- S'Output
-
For every subtype S of a specific type T:
170
- S'Output denotes a procedure with the following
specification:
171
procedure S'Output(
Stream : access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
172
- S'Output writes the value of Item to Stream,
including any bounds or discriminants. See 13.13.2.
173/1
- D'Partition_ID
-
For a prefix
prefix
D that denotes a library-level declaration, excepting a declaration of
or within a declared-pure library unit:
174
- Denotes a value of the type universal_integer that
identifies the partition in which D was elaborated. If D denotes the declaration
of a remote call interface library unit (see E.2.3)
the given partition is the one where the body of D was elaborated. See E.1.
175
- S'Pos
-
For every discrete subtype S:
176
- S'Pos denotes a function with the following specification:
177
function S'Pos(Arg : S'Base)
return universal_integer
178
- This function returns the position number of the
value of Arg, as a value of type universal_integer. See
3.5.5.
179
- R.C'Position
-
For a component C of a composite, non-array object R:
180
- Denotes the same value as R.C'Address - R'Address.
The value of this attribute is of the type universal_integer.
See 13.5.2.
181
- S'Pred
-
For every scalar subtype S:
182
- S'Pred denotes a function with the following specification:
183
function S'Pred(Arg : S'Base)
return S'Base
184
- {Constraint_Error (raised by failure of
run-time check)} For an enumeration type, the
function returns the value whose position number is one less than that of
the value of Arg; {Range_Check [partial]}
{check, language-defined (Range_Check)}
Constraint_Error is raised if there is no such value of
the type. For an integer type, the function returns the result of subtracting
one from the value of Arg. For a fixed point type, the function returns
the result of subtracting small from the value of Arg. For a
floating point type, the function returns the machine number (as defined in
3.5.7) immediately below the value of Arg;
{Range_Check [partial]} {check,
language-defined (Range_Check)} Constraint_Error
is raised if there is no such machine number. See 3.5.
185/1
- A'Range
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
186
- A'Range is equivalent to the range A'First .. A'Last,
except that the prefix A is only
evaluated once. See 3.6.2.
187
- S'Range
-
For every scalar subtype S:
188
- S'Range is equivalent to the range
S'First .. S'Last. See 3.5.
189/1
- A'Range(N)
-
For a prefix
prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
190
- A'Range(N) is equivalent to the range A'First(N)
.. A'Last(N), except that the prefix
A is only evaluated once. See 3.6.2.
191
- S'Class'Read
-
For every subtype S'Class of a class-wide type T'Class:
192
- S'Class'Read denotes a procedure with the following
specification:
193
procedure S'Class'Read(
Stream : access Ada.Streams.Root_Stream_Type'Class;
Item : out T'Class)
194
- Dispatches to the subprogram denoted by the Read
attribute of the specific type identified by the tag of Item. See 13.13.2.
195
- S'Read
-
For every subtype S of a specific type T:
196
- S'Read denotes a procedure with the following specification:
197
procedure S'Read(
Stream : access Ada.Streams.Root_Stream_Type'Class;
Item : out T)
198
- S'Read reads the value of Item from Stream.
See 13.13.2.
199
- S'Remainder
-
For every subtype S of a floating point type T:
200
- S'Remainder denotes a function with the following
specification:
201
function S'Remainder (X, Y : T)
return T
202
- {Constraint_Error (raised by failure
of run-time check)} For nonzero Y,
let v be the value X - n · Y, where
n is the integer nearest to the exact value of X/Y;
if |n - X/Y| = 1/2, then n is chosen
to be even. If v is a machine number of the type T, the
function yields v; otherwise, it yields zero. {Division_Check
[partial]} {check, language-defined
(Division_Check)} Constraint_Error is
raised if Y is zero. A zero result has the sign of X when
S'Signed_Zeros is True. See A.5.3.
203
- S'Round
-
For every decimal fixed point subtype S:
204
- S'Round denotes a function with the following specification:
205
function S'Round(X : universal_real)
return S'Base
206
- The function returns the value obtained by rounding
X (away from 0, if X is midway between two values of the type of S).
See 3.5.10.
207
- S'Rounding
-
For every subtype S of a floating point type T:
208
- S'Rounding denotes a function with the following
specification:
209
function S'Rounding (X : T)
return T
210
- The function yields the integral value nearest to
X, rounding away from zero if X lies exactly halfway between
two integers. A zero result has the sign of X when S'Signed_Zeros
is True. See A.5.3.
211
- S'Safe_First
-
For every subtype S of a floating point type T:
212
- Yields the lower bound of the safe range (see 3.5.7)
of the type T. If the Numerics Annex is not supported, the value of
this attribute is implementation defined; see G.2.2
for the definition that applies to implementations supporting the Numerics
Annex. The value of this attribute is of the type universal_real. See
A.5.3.
213
- S'Safe_Last
-
For every subtype S of a floating point type T:
214
- Yields the upper bound of the safe range (see 3.5.7)
of the type T. If the Numerics Annex is not supported, the value of
this attribute is implementation defined; see G.2.2
for the definition that applies to implementations supporting the Numerics
Annex. The value of this attribute is of the type universal_real. See
A.5.3.
215
- S'Scale
-
For every decimal fixed point subtype S:
216
- S'Scale denotes the scale of the subtype
S, defined as the value N such that S'Delta = 10.0**(-N). {scale
(of a decimal fixed point subtype)} The
scale indicates the position of the point relative to the rightmost significant
digits of values of subtype S. The value of this attribute is of the
type universal_integer. See 3.5.10.
217
- S'Scaling
-
For every subtype S of a floating point type T:
218
- S'Scaling denotes a function with the following
specification:
219
function S'Scaling (X : T;
Adjustment : universal_integer)
return T
220
- {Constraint_Error (raised by failure
of run-time check)} Let v be the
value X · T'Machine_RadixAdjustment.
If v is a machine number of the type T, or if |v|
>= T'Model_Small, the function yields v; otherwise, it
yields either one of the machine numbers of the type T adjacent
to v. {Range_Check [partial]} {check,
language-defined (Range_Check)} Constraint_Error
is optionally raised if v is outside the base range of S. A zero
result has the sign of X when S'Signed_Zeros is True. See A.5.3.
221
- S'Signed_Zeros
-
For every subtype S of a floating point type T:
222
- Yields the value True if the hardware representation
for the type T has the capability of representing both positively
and negatively signed zeros, these being generated and used by the predefined
operations of the type T as specified in IEC 559:1989; yields
the value False otherwise. The value of this attribute is of the predefined
type Boolean. See A.5.3.
223
- S'Size
-
For every subtype S:
224
- If S is definite, denotes the size (in bits) that
the implementation would choose for the following objects of subtype
S:
225
- A record component of subtype S when the record type is
packed.
226
- The formal parameter of an instance of Unchecked_Conversion
that converts from subtype S to some other subtype.
227
- If S is indefinite, the meaning is implementation
defined. The value of this attribute is of the type universal_integer.
See 13.3.
228/1
- X'Size
-
For a prefix
prefix
X that denotes an object:
229
- Denotes the size in bits of the representation of
the object. The value of this attribute is of the type universal_integer.
See 13.3.
230
- S'Small
-
For every fixed point subtype S:
231
- S'Small denotes the small of the type of
S. The value of this attribute is of the type universal_real.
See 3.5.10.
232
- S'Storage_Pool
-
For every access subtype S:
233
- Denotes the storage pool of the type of S. The type
of this attribute is Root_Storage_Pool'Class. See 13.11.
234
- S'Storage_Size
-
For every access subtype S:
235
- Yields the result of calling Storage_Size(S'Storage_Pool),
which is intended to be a measure of the number of storage elements reserved
for the pool. The type of this attribute is universal_integer.
See 13.11.
236/1
- T'Storage_Size
-
For a prefix
prefix
T that denotes a task object (after any implicit dereference):
237
- Denotes the number of storage elements reserved
for the task. The value of this attribute is of the type universal_integer.
The Storage_Size includes the size of the task's stack, if any. The language
does not specify whether or not it includes other storage associated
with the task (such as the ``task control block'' used by some implementations.)
See 13.3.
238
- S'Succ
-
For every scalar subtype S:
239
- S'Succ denotes a function with the following specification:
240
function S'Succ(Arg : S'Base)
return S'Base
241
- {Constraint_Error (raised by failure of
run-time check)} For an enumeration type, the
function returns the value whose position number is one more than that of
the value of Arg; {Range_Check [partial]}
{check, language-defined (Range_Check)}
Constraint_Error is raised if there is no such value of
the type. For an integer type, the function returns the result of adding one
to the value of Arg. For a fixed point type, the function returns the
result of adding small to the value of Arg. For a floating point
type, the function returns the machine number (as defined in 3.5.7)
immediately above the value of Arg; {Range_Check
[partial]} {check, language-defined
(Range_Check)} Constraint_Error is raised if
there is no such machine number. See 3.5.
242
- X'Tag
-
For a prefix X that is of a class-wide
tagged type (after any implicit dereference):
243
- X'Tag denotes the tag of X. The value of this attribute
is of type Tag. See 3.9.
244
- S'Tag
-
For every subtype S of a tagged type T (specific or class-wide):
245
- S'Tag denotes the tag of the type T (or if
T is class-wide, the tag of the root type of the corresponding
class). The value of this attribute is of type Tag. See 3.9.
246
- T'Terminated
-
For a prefix T that is of a task
type (after any implicit dereference):
247
- Yields the value True if the task denoted by T is
terminated, and False otherwise. The value of this attribute is of the
predefined type Boolean. See 9.9.
248
- S'Truncation
-
For every subtype S of a floating point type T:
249
- S'Truncation denotes a function with the following
specification:
250
function S'Truncation (X : T)
return T
251
- The function yields the value Ceiling(X)
when X is negative, and Floor(X) otherwise. A zero
result has the sign of X when S'Signed_Zeros is True. See A.5.3.
252
- S'Unbiased_Rounding
-
For every subtype S of a floating point type T:
253
- S'Unbiased_Rounding denotes a function with the
following specification:
254
function S'Unbiased_Rounding (X : T)
return T
255
- The function yields the integral value nearest to
X, rounding toward the even integer if X lies exactly halfway
between two integers. A zero result has the sign of X when S'Signed_Zeros
is True. See A.5.3.
256
- X'Unchecked_Access
-
For a prefix X that denotes an aliased
view of an object:
257
- All rules and semantics that apply to X'Access (see 3.10.2)
apply also to X'Unchecked_Access, except that, for the purposes of accessibility
rules and checks, it is as if X were declared immediately within a library
package. See 13.10.
258
- S'Val
-
For every discrete subtype S:
259
- S'Val denotes a function with the following specification:
260
function S'Val(Arg : universal_integer)
return S'Base
261
- {evaluation (Val) [partial]}
{Constraint_Error (raised by failure
of run-time check)} This function returns
a value of the type of S whose position number equals the value of Arg.
See 3.5.5.
262
- X'Valid
-
For a prefix X that denotes a scalar
object (after any implicit dereference):
263
- Yields True if and only if the object denoted by
X is normal and has a valid representation. The value of this attribute
is of the predefined type Boolean. See 13.9.2.
264
- S'Value
-
For every scalar subtype S:
265
- S'Value denotes a function with the following specification:
266
function S'Value(Arg : String)
return S'Base
267
- This function returns a value given an image of
the value as a String, ignoring any leading or trailing spaces. See 3.5.
268/1
- P'Version
-
For a prefix
prefix
P that statically denotes a program unit:
269
- Yields a value of the predefined type String that
identifies the version of the compilation unit that contains the declaration
of the program unit. See E.3.
270
- S'Wide_Image
-
For every scalar subtype S:
271
- S'Wide_Image denotes a function with the following
specification:
272
function S'Wide_Image(Arg : S'Base)
return Wide_String
273
- {image (of a value)}
The function returns an image of the value
of Arg, that is, a sequence of characters representing the value
in display form. See 3.5.
274
- S'Wide_Value
-
For every scalar subtype S:
275
- S'Wide_Value denotes a function with the following
specification:
276
function S'Wide_Value(Arg : Wide_String)
return S'Base
277
- This function returns a value given an image of
the value as a Wide_String, ignoring any leading or trailing spaces.
See 3.5.
278
- S'Wide_Width
-
For every scalar subtype S:
279
- S'Wide_Width denotes the maximum length of a Wide_String
returned by S'Wide_Image over all values of the subtype S. It denotes
zero for a subtype that has a null range. Its type is universal_integer.
See 3.5.
280
- S'Width
-
For every scalar subtype S:
281
- S'Width denotes the maximum length of a String returned
by S'Image over all values of the subtype S. It denotes zero for a subtype
that has a null range. Its type is universal_integer. See 3.5.
282
- S'Class'Write
-
For every subtype S'Class of a class-wide type T'Class:
283
- S'Class'Write denotes a procedure with the following
specification:
284
procedure S'Class'Write(
Stream : access Ada.Streams.Root_Stream_Type'Class;
Item : in T'Class)
285
- Dispatches to the subprogram denoted by the Write
attribute of the specific type identified by the tag of Item. See 13.13.2.
286
- S'Write
-
For every subtype S of a specific type T:
287
- S'Write denotes a procedure with the following specification:
288
procedure S'Write(
Stream : access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
289
- S'Write writes the value of Item to Stream.
See 13.13.2.
Contents Index Previous Next Legal