- (1)
- 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)
- X'Address
For a 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)
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. 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)
- X'Alignment
For a 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)
- P'Body_Version
For a 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 a tagged type T (specific or
class-wide):
- (32)
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).
- (33)
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.
- (34)
- S'Class
For every subtype S of an untagged private type whose full
view is tagged:
- (35)
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.
- (36)
- X'Component_Size
For a 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)
Let v be the value Fraction*T'Machine_Radix**(Exponent-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. 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)
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.
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)
- S'Definite
For a 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_Radix**T'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)
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)
- A'First(N)
For a prefix A that is of an array type (after any implicit
dereference), or denotes a constrained array subtype:
- (67)
A'First(N) denotes the lower bound of the N-th index
range; its type is the corresponding index type. See 3.6.2.
- (68)
- A'First
For a 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)
- 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)
- E'Identity
For a prefix E that denotes an exception:
- (85)
E'Identity returns the unique identity of the exception.
The type of this attribute is Exception_Id. See 11.4.1.
- (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)
- 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)
- A'Last(N)
For a prefix A that is of an array type (after any implicit
dereference), or denotes a constrained array subtype:
- (101)
A'Last(N) denotes the upper bound of the N-th index
range; its type is the corresponding index type. See 3.6.2.
- (102)
- A'Last
For a 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)
- 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_Radix**(k-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 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)
- A'Length(N)
For a prefix A that is of an array type (after any implicit
dereference), or denotes a constrained array subtype:
- (116)
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.
- (117)
- A'Length
For a 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)
- 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)
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. 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
- (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_Radix**(1-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_Radix**(T'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)
- D'Partition_ID
For a 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)
For an enumeration type, the function returns the value
whose position number is one less than that of the value of
Arg; 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; Constraint_Error is
raised if there is no such machine number. See 3.5.
- (185)
- A'Range(N)
For a prefix A that is of an array type (after any implicit
dereference), or denotes a constrained array subtype:
- (186)
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.
- (187)
- A'Range
For a 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)
- 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)
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.
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). 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)
Let v be the value X*T'Machine_Radix**Adjustment. 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. 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
- (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)
- X'Size
For a 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)
- T'Storage_Size
For a 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)
For an enumeration type, the function returns the value
whose position number is one more than that of the value of
Arg; 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; Constraint_Error is raised if there
is no such machine number. See 3.5.
- (242)
- S'Tag
For every subtype S of a tagged type T (specific or
class-wide):
- (243)
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.
- (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)
- 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)
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)
- P'Version
For a 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)
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.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe
-- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12