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
S'Alignment
For every subtype S:
15
The value of this attribute
is of type universal_integer, and nonnegative.
15.1/2
For an object X of subtype
S, if S'Alignment is not zero, then X'Alignment is a nonzero integral
multiple of S'Alignment unless specified otherwise by a representation
item. See
13.3.
16/1
X'Alignment
For a prefix prefix
X that denotes an a
subtype or object:
17
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.
If X'Alignment is not zero, then X is aligned on a storage unit boundary
and X'Address The Address of an object that
is allocated under control of the implementation is an integral
multiple of X'Alignment 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.
18/2
This paragraph
was deleted.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.
19
S'Base
For every scalar subtype S:
20
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.
21
S'Bit_Order
For every specific record subtype S:
22
Denotes the bit ordering for the type of S.
The value of this attribute is of type System.Bit_Order. See
13.5.3.
23/1
P'Body_Version
For a prefix prefix
P that statically denotes a program unit:
24
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.
25
T'Callable
For a prefix T that is of a task type (after
any implicit dereference):
26
Yields the value True when the task denoted
by T is
callable, and False otherwise; See
9.9.
27
E'Caller
For a prefix E that denotes an entry_declaration:
28
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.
29
S'Ceiling
For every subtype S of a floating point type T:
30
S'Ceiling denotes
a function with the following specification:
31
function S'Ceiling (X : T)
return T
32
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.
33
S'Class
For every subtype S of an untagged private type whose full view is tagged:
34
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.
35
S'Class
For every subtype S of a tagged type T (specific or class-wide):
36
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).
37
{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.
38/1
X'Component_Size
For a prefix prefix
X that denotes an array subtype or array object (after any implicit dereference):
39
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.
40
S'Compose
For every subtype S of a floating point type T:
41
S'Compose denotes
a function with the following specification:
42
function S'Compose (Fraction : T;
Exponent : universal_integer)
return T
43
{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.
44
A'Constrained
For a prefix A that is of a discriminated
type (after any implicit dereference):
45
Yields the value True if A denotes a constant,
a value, or a constrained variable, and False otherwise. See
3.7.2.
46
S'Copy_Sign
For every subtype S of a floating point type T:
47
S'Copy_Sign denotes
a function with the following specification:
48
function S'Copy_Sign (Value, Sign : T)
return T
49
{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.
50
E'Count
For a prefix E that denotes an entry of a
task or protected unit:
51
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.
52/1
S'Definite
For a prefix prefix
S that denotes a formal indefinite subtype:
53
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.
54
S'Delta
For every fixed point subtype S:
55
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.
56
S'Denorm
For every subtype S of a floating point type T:
57
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.
58
S'Digits
For every decimal fixed point subtype S:
59
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.
60
S'Digits
For every floating point subtype S:
61
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.
62
S'Exponent
For every subtype S of a floating point type T:
63
S'Exponent denotes
a function with the following specification:
64
function S'Exponent (X : T)
return universal_integer
65
The function yields the normalized exponent
of
X. See
A.5.3.
66
S'External_Tag
For every subtype S of a tagged type T (specific or class-wide):
67
{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.
68/1
A'First
For a prefix prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
69
A'First denotes the lower bound of the first
index range; its type is the corresponding index type. See
3.6.2.
70
S'First
For every scalar subtype S:
71
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.
72/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:
73
A'First(N) denotes the lower bound of the N-th
index range; its type is the corresponding index type. See
3.6.2.
74
R.C'First_Bit
For a component C of a composite, non-array object R:
75/2
If the nondefault bit
ordering applies to the composite type, and if a component_clause
specifies the placement of C, denotes the value given for the first_bit
of the component_clause; otherwise, denotes 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.
76
S'Floor
For every subtype S of a floating point type T:
77
S'Floor denotes
a function with the following specification:
78
function S'Floor (X : T)
return T
79
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.
80
S'Fore
For every fixed point subtype S:
81
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.
82
S'Fraction
For every subtype S of a floating point type T:
83
S'Fraction denotes
a function with the following specification:
84
function S'Fraction (X : T)
return T
85
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.
86
T'Identity
For a prefix T that is of a task type (after
any implicit dereference):
87
Yields a value of the type Task_Id that identifies
the task denoted by T. See
C.7.1.
88/1
E'Identity
For a prefix prefix
E that denotes an exception:
89
E'Identity returns the unique identity of the
exception. The type of this attribute is Exception_Id. See
11.4.1.
90
S'Image
For every scalar subtype S:
91
S'Image denotes
a function with the following specification:
92
function S'Image(Arg : S'Base)
return String
93/2
The function returns an image of the value
of
Arg as a String. See
3.5.
94
S'Class'Input
For every subtype S'Class of a class-wide type T'Class:
95
S'Class'Input
denotes a function with the following specification:
96/2
function S'Class'Input(
Stream : not null access Ada.Streams.Root_Stream_Type'Class)
return T'Class
97/2
First reads the external tag from
Stream
and determines the corresponding internal tag (by calling Tags.
Descendant_Tag Internal_Tag(String'Input(
Stream)
,
S'Tag)
which might raise Tag_Error —
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.
If the specific
type identified by the internal tag is not covered by T'Class
or is abstract, Constraint_Error is raised. See
13.13.2.
98
S'Input
For every subtype S of a specific type T:
99
S'Input denotes
a function with the following specification:
100/2
function S'Input(
Stream : not null access Ada.Streams.Root_Stream_Type'Class)
return T
101
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.
102/1
A'Last
For a prefix prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
103
A'Last denotes the upper bound of the first
index range; its type is the corresponding index type. See
3.6.2.
104
S'Last
For every scalar subtype S:
105
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.
106/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:
107
A'Last(N) denotes the upper bound of the N-th
index range; its type is the corresponding index type. See
3.6.2.
108
R.C'Last_Bit
For a component C of a composite, non-array object R:
109/2
If the nondefault bit
ordering applies to the composite type, and if a component_clause
specifies the placement of C, denotes the value given for the last_bit
of the component_clause; otherwise, denotes 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.
110
S'Leading_Part
For every subtype S of a floating point type T:
111
S'Leading_Part
denotes a function with the following specification:
112
function S'Leading_Part (X : T;
Radix_Digits : universal_integer)
return T
113
Let v be
the value T'Machine_Radixk–Radix_Digits,
where k is the normalized exponent
of X. The function yields the value
114
- Floor(X/v)
· v, when X is nonnegative
and Radix_Digits is positive;
115
- Ceiling(X/v)
· v, when X is negative
and Radix_Digits is positive.
116
{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.
117/1
A'Length
For a prefix prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
118
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.
119/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:
120
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.
121
S'Machine
For every subtype S of a floating point type T:
122
S'Machine denotes
a function with the following specification:
123
function S'Machine (X : T)
return T
124
{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.
125
S'Machine_Emax
For every subtype S of a floating point type T:
126
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.
127
S'Machine_Emin
For every subtype S of a floating point type T:
128
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.
129
S'Machine_Mantissa
For every subtype S of a floating point type T:
130
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.
131
S'Machine_Overflows
For every subtype S of a fixed 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.4.
133
S'Machine_Overflows
For every subtype S of a floating point type T:
134
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.
135
S'Machine_Radix
For every subtype S of a fixed 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.4.
137
S'Machine_Radix
For every subtype S of a floating point type T:
138
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.
138.1/2
S'Machine_Rounding
For every subtype S of a floating point type T:
138.2/2
S'Machine_Rounding
denotes a function with the following specification:
138.3/2
function S'Machine_Rounding (X : T)
return T
138.4/2
The function yields the
integral value nearest to X. If X lies exactly halfway
between two integers, one of those integers is returned, but which of
them is returned is unspecified. A zero result has the sign of X
when S'Signed_Zeros is True. This function provides access to the rounding
behavior which is most efficient on the target processor.{unspecified
[partial]} See
A.5.3.
139
S'Machine_Rounds
For every subtype S of a fixed 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.4.
141
S'Machine_Rounds
For every subtype S of a floating point type T:
142
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.
143
S'Max
For every scalar subtype S:
144
S'Max denotes
a function with the following specification:
145
function S'Max(Left, Right : S'Base)
return S'Base
146
The function returns the greater of the values
of the two parameters. See
3.5.
147
S'Max_Size_In_Storage_Elements
For every subtype S:
148/2
Denotes the maximum value for Size_In_Storage_Elements
that
could will
be requested
by the implementation via Allocate
for an access type whose designated subtype is S.
For a type with access discriminants, if the implementation allocates
space for a coextension in the same pool as that of the object having
the access discriminant, then this accounts for any calls on Allocate
that could be performed to provide space for such coextensions.
The value of this attribute is of type
universal_integer. See
13.11.1.
149
S'Min
For every scalar subtype S:
150
S'Min denotes
a function with the following specification:
151
function S'Min(Left, Right : S'Base)
return S'Base
152
The function returns the lesser of the values
of the two parameters. See
3.5.
152.1/2
S'Mod
For every modular subtype S:
152.2/2
S'Mod
denotes a function with the following specification:
152.3/2
function S'Mod (Arg : universal_integer)
return S'Base
152.4/2
This function returns
Arg mod S'Modulus, as a value of the type of S.
See
3.5.4.
153
S'Model
For every subtype S of a floating point type T:
154
S'Model denotes
a function with the following specification:
155
function S'Model (X : T)
return T
156
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.
157
S'Model_Emin
For every subtype S of a floating point type T:
158
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.
159
S'Model_Epsilon
For every subtype S of a floating point type T:
160
Yields the value
T'Machine_Radix1
– T'Model_Mantissa.
The value of this attribute is of the type
universal_real. See
A.5.3.
161
S'Model_Mantissa
For every subtype S of a floating point type T:
162
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.
163
S'Model_Small
For every subtype S of a floating point type T:
164
Yields the value
T'Machine_RadixT'Model_Emin – 1. The value of this attribute is of the
type
universal_real. See
A.5.3.
165
S'Modulus
For every modular subtype S:
166
S'Modulus yields the modulus of the type of
S, as a value of the type
universal_integer. See
3.5.4.
167
S'Class'Output
For every subtype S'Class of a class-wide type T'Class:
168
S'Class'Output
denotes a procedure with the following specification:
169/2
procedure S'Class'Output(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T'Class)
170/2
First writes the external tag of
Item
to
Stream (by calling String'Output(
Stream,
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.
Tag_Error is raised if the tag of Item
identifies a type declared at an accessibility level deeper than that
of S. See
13.13.2.
171
S'Output
For every subtype S of a specific type T:
172
S'Output denotes
a procedure with the following specification:
173/2
procedure S'Output(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
174
S'Output writes the value of
Item to
Stream, including any bounds or discriminants. See
13.13.2.
175/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:
176
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.
177
S'Pos
For every discrete subtype S:
178
S'Pos denotes
a function with the following specification:
179
function S'Pos(Arg : S'Base)
return universal_integer
180
This function returns the position number of
the value of
Arg, as a value of type
universal_integer.
See
3.5.5.
181
R.C'Position
For a component C of a composite, non-array object R:
182/2
If the nondefault bit
ordering applies to the composite type, and if a component_clause
specifies the placement of C, denotes the value given for the position
of the component_clause; otherwise, denotes 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.
183
S'Pred
For every scalar subtype S:
184
S'Pred denotes
a function with the following specification:
185
function S'Pred(Arg : S'Base)
return S'Base
186
{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.
186.1/2
P'Priority
For a prefix P that
denotes a protected object:
186.2/2
Denotes a non-aliased
component of the protected object P. This component is of type System.Any_Priority
and its value is the priority of P. P'Priority denotes a variable if
and only if P denotes a variable. A reference to this attribute shall
appear only within the body of P. See
D.5.2.
187/1
A'Range
For a prefix prefix
A that is of an array type (after any implicit dereference), or denotes
a constrained array subtype:
188
A'Range is equivalent to the range A'First
.. A'Last, except that the
prefix A is only
evaluated once. See
3.6.2.
189
S'Range
For every scalar subtype S:
190
S'Range is equivalent to the
range
S'First .. S'Last. See
3.5.
191/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:
192
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.
193
S'Class'Read
For every subtype S'Class of a class-wide type T'Class:
194
S'Class'Read
denotes a procedure with the following specification:
195/2
procedure S'Class'Read(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : out T'Class)
196
Dispatches to the subprogram denoted by the
Read attribute of the specific type identified by the tag of Item. See
13.13.2.
197
S'Read
For every subtype S of a specific type T:
198
S'Read denotes
a procedure with the following specification:
199/2
procedure S'Read(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : out T)
200
S'Read reads the value of
Item from
Stream. See
13.13.2.
201
S'Remainder
For every subtype S of a floating point type T:
202
S'Remainder denotes
a function with the following specification:
203
function S'Remainder (X, Y : T)
return T
204
{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.
205
S'Round
For every decimal fixed point subtype S:
206
S'Round denotes
a function with the following specification:
207
function S'Round(X : universal_real)
return S'Base
208
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.
209
S'Rounding
For every subtype S of a floating point type T:
210
S'Rounding denotes
a function with the following specification:
211
function S'Rounding (X : T)
return T
212
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.
213
S'Safe_First
For every subtype S of a floating point type T:
214
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.
215
S'Safe_Last
For every subtype S of a floating point type T:
216
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.
217
S'Scale
For every decimal fixed point subtype S:
218
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.
219
S'Scaling
For every subtype S of a floating point type T:
220
S'Scaling denotes
a function with the following specification:
221
function S'Scaling (X : T;
Adjustment : universal_integer)
return T
222
{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.
223
S'Signed_Zeros
For every subtype S of a floating point type T:
224
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.
225
S'Size
For every subtype S:
226
If S is definite,
denotes the size (in bits) that the implementation would choose for the
following objects of subtype S:
227
- A record component of subtype
S when the record type is packed.
228
- The formal parameter of an
instance of Unchecked_Conversion that converts from subtype S to some
other subtype.
229
If S is indefinite, the meaning is implementation
defined. The value of this attribute is of the type
universal_integer.
See
13.3.
230/1
X'Size
For a prefix prefix
X that denotes an object:
231
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.
232
S'Small
For every fixed point subtype S:
233
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.
234
S'Storage_Pool
For every access-to-object subtype S:
235
Denotes the storage pool of the type of S.
The type of this attribute is Root_Storage_Pool'Class. See
13.11.
236
S'Storage_Size
For every access-to-object subtype S:
237
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.
238/1
T'Storage_Size
For a prefix prefix
T that denotes a task object (after any implicit dereference):
239
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.
239.1/2
S'Stream_Size
For every subtype S of an elementary type T:
239.2/2
Denotes
the number of bits occupied in a stream by items of subtype S. Hence,
the number of stream elements required per item of elementary type T
is:
239.3/2
T'Stream_Size / Ada.Streams.Stream_Element'Size
239.4/2
The value of this attribute
is of type universal_integer and is a multiple of Stream_Element'Size.
See
13.13.2.
240
S'Succ
For every scalar subtype S:
241
S'Succ denotes
a function with the following specification:
242
function S'Succ(Arg : S'Base)
return S'Base
243
{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.
244
X'Tag
For a prefix X that is of a class-wide tagged
type (after any implicit dereference):
245
X'Tag denotes the tag of X. The value of this
attribute is of type Tag. See
3.9.
246
S'Tag
For every subtype S of a tagged type T (specific or class-wide):
247
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.
248
T'Terminated
For a prefix T that is of a task type (after
any implicit dereference):
249
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.
250
S'Truncation
For every subtype S of a floating point type T:
251
S'Truncation
denotes a function with the following specification:
252
function S'Truncation (X : T)
return T
253
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.
254
S'Unbiased_Rounding
For every subtype S of a floating point type T:
255
S'Unbiased_Rounding
denotes a function with the following specification:
256
function S'Unbiased_Rounding (X : T)
return T
257
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.
258
X'Unchecked_Access
For a prefix X that denotes an aliased view
of an object:
259
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.
260
S'Val
For every discrete subtype S:
261
S'Val denotes
a function with the following specification:
262
function S'Val(Arg : universal_integer)
return S'Base
263
{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.
264
X'Valid
For a prefix X that denotes a scalar object
(after any implicit dereference):
265
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.
266
S'Value
For every scalar subtype S:
267
S'Value denotes
a function with the following specification:
268
function S'Value(Arg : String)
return S'Base
269
This function returns a value given an image
of the value as a String, ignoring any leading or trailing spaces. See
3.5.
270/1
P'Version
For a prefix prefix
P that statically denotes a program unit:
271
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.
272
S'Wide_Image
For every scalar subtype S:
273
S'Wide_Image
denotes a function with the following specification:
274
function S'Wide_Image(Arg : S'Base)
return Wide_String
275/2
{image (of
a value)} The function returns an
image image
of the value of
Arg as a Wide_String,
that is, a sequence of characters representing the value in display form.
See
3.5.
276
S'Wide_Value
For every scalar subtype S:
277
S'Wide_Value
denotes a function with the following specification:
278
function S'Wide_Value(Arg : Wide_String)
return S'Base
279
This function returns a value given an image
of the value as a Wide_String, ignoring any leading or trailing spaces.
See
3.5.
279.1/2
S'Wide_Wide_Image
For every scalar subtype S:
279.2/2
S'Wide_Wide_Image
denotes a function with the following specification:
279.3/2
function S'Wide_Wide_Image(Arg : S'Base)
return Wide_Wide_String
279.4/2
{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.
279.5/2
S'Wide_Wide_Value
For every scalar subtype S:
279.6/2
S'Wide_Wide_Value
denotes a function with the following specification:
279.7/2
function S'Wide_Wide_Value(Arg : Wide_Wide_String)
return S'Base
279.8/2
This function returns
a value given an image of the value as a Wide_Wide_String, ignoring any
leading or trailing spaces. See
3.5.
279.9/2
S'Wide_Wide_Width
For every scalar subtype S:
279.10/2
S'Wide_Wide_Width
denotes the maximum length of a Wide_Wide_String returned by S'Wide_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'Wide_Width
For every scalar subtype S:
281
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.
282
S'Width
For every scalar subtype S:
283
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.
284
S'Class'Write
For every subtype S'Class of a class-wide type T'Class:
285
S'Class'Write
denotes a procedure with the following specification:
286/2
procedure S'Class'Write(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T'Class)
287
Dispatches to the subprogram denoted by the
Write attribute of the specific type identified by the tag of Item. See
13.13.2.
288
S'Write
For every subtype S of a specific type T:
289
S'Write denotes
a procedure with the following specification:
290/2
procedure S'Write(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
291
S'Write writes the value of
Item to
Stream. See
13.13.2.