dwww Home | Show directory contents | Find package


                                   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 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.

13.1/2 S'Alignment
                For every subtype S:

13.2/2          The value of this attribute is of type universal_integer, and
                nonnegative.

13.3/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.

14/1 X'Alignment
                For a prefix X that denotes an object:

15              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 is an integral multiple of X'Alignment (that is, the
                Address modulo the Alignment is zero).

16/2            This paragraph was deleted. 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 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              {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.

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/1 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              {Constraint_Error (raised by failure of run-time check)} 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. {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 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 floating point subtype S:

57              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.

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'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 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 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.

71.1/2 R.C'First_Bit
                For a component C of a composite, non-array object R:

71.2/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 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.

72  S'Floor     For every subtype S of a floating point type T:

73              S'Floor denotes a function with the following specification:

74                  function S'Floor (X : T)
                      return T

75              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.

76  S'Fore      For every fixed point subtype S:

77              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.

78  S'Fraction  For every subtype S of a floating point type T:

79              S'Fraction denotes a function with the following
                specification:

80                  function S'Fraction (X : T)
                      return T

81              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.

82/1 E'Identity For a prefix E that denotes an exception:

83              E'Identity returns the unique identity of the exception. The
                type of this attribute is Exception_Id. See 11.4.1.

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  S'Image     For every scalar subtype S:

87              S'Image denotes a function with the following specification:

88                  function S'Image(Arg : S'Base)
                      return String

89/2            The function returns an image of the value of Arg as a String.
                See 3.5.

90  S'Class'Input
                For every subtype S'Class of a class-wide type T'Class:

91              S'Class'Input denotes a function with the following
                specification:

92/2                function S'Class'Input(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class)
                       return T'Class

93/2            First reads the external tag from Stream and determines the
                corresponding internal tag (by calling
                Tags.Descendant_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.

94  S'Input     For every subtype S of a specific type T:

95              S'Input denotes a function with the following specification:

96/2                function S'Input(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class)
                       return T

97              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.

98/1 A'Last     For a prefix A that is of an array type (after any implicit
                dereference), or denotes a constrained array subtype:

99              A'Last denotes the upper bound of the first index range; its
                type is the corresponding index type. See 3.6.2.

100 S'Last      For every scalar subtype S:

101             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.

102/1 A'Last(N) For a prefix A that is of an array type (after any implicit
                dereference), or denotes a constrained array subtype:

103             A'Last(N) denotes the upper bound of the N-th index range; its
                type is the corresponding index type. See 3.6.2.

103.1/2 R.C'Last_Bit
                For a component C of a composite, non-array object R:

103.2/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 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.

104 S'Leading_Part
                For every subtype S of a floating point type T:

105             S'Leading_Part denotes a function with the following
                specification:

106                 function S'Leading_Part (X : T;
                                             Radix_Digits : universal_integer)
                      return T

107             Let v be the value T'Machine_Radix(k-Radix_Digits), where k is
                the normalized exponent of X. The function yields the value

108               * Floor(X/v) · v, when X is nonnegative and Radix_Digits is
                    positive;

109               * Ceiling(X/v) · v, when X is negative and Radix_Digits is
                    positive.

110             {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.

111/1 A'Length  For a prefix A that is of an array type (after any implicit
                dereference), or denotes a constrained array subtype:

112             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.

113/1 A'Length(N)
                For a prefix A that is of an array type (after any implicit
                dereference), or denotes a constrained array subtype:

114             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.

115 S'Machine   For every subtype S of a floating point type T:

116             S'Machine denotes a function with the following specification:

117                 function S'Machine (X : T)
                      return T

118             {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.

119 S'Machine_Emax
                For every subtype S of a floating point type T:

120             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.

121 S'Machine_Emin
                For every subtype S of a floating point type T:

122             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.

123 S'Machine_Mantissa
                For every subtype S of a floating point type T:

124             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.

125 S'Machine_Overflows
                For every subtype S of a floating point type T:

126             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.

127 S'Machine_Overflows
                For every subtype S of a fixed point type T:

128             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.

129 S'Machine_Radix
                For every subtype S of a floating point type T:

130             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.

131 S'Machine_Radix
                For every subtype S of a fixed point type T:

132             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.

132.1/2 S'Machine_Rounding
                For every subtype S of a floating point type T:

132.2/2         S'Machine_Rounding denotes a function with the following
                specification:

132.3/2             function S'Machine_Rounding (X : T)
                      return T

132.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.

133 S'Machine_Rounds
                For every subtype S of a floating point type T:

134             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.

135 S'Machine_Rounds
                For every subtype S of a fixed point type T:

136             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.

137 S'Max       For every scalar subtype S:

138             S'Max denotes a function with the following specification:

139                 function S'Max(Left, Right : S'Base)
                      return S'Base

140             The function returns the greater of the values of the two
                parameters. See 3.5.

140.1/2 S'Max_Size_In_Storage_Elements
                For every subtype S:

140.2/2         Denotes the maximum value for Size_In_Storage_Elements that
                could 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.

141 S'Min       For every scalar subtype S:

142             S'Min denotes a function with the following specification:

143                 function S'Min(Left, Right : S'Base)
                      return S'Base

144             The function returns the lesser of the values of the two
                parameters. See 3.5.

144.1/2 S'Mod   For every modular subtype S:

144.2/2         S'Mod denotes a function with the following specification:

144.3/2             function S'Mod (Arg : universal_integer)
                      return S'Base

144.4/2         This function returns Arg mod S'Modulus, as a value of the
                type of S. See 3.5.4.

145 S'Model     For every subtype S of a floating point type T:

146             S'Model denotes a function with the following specification:

147                 function S'Model (X : T)
                      return T

148             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.

149 S'Model_Emin
                For every subtype S of a floating point type T:

150             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.

151 S'Model_Epsilon
                For every subtype S of a floating point type T:

152             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.

153 S'Model_Mantissa
                For every subtype S of a floating point type T:

154             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.

155 S'Model_Small
                For every subtype S of a floating point type T:

156             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.

157 S'Modulus   For every modular subtype S:

158             S'Modulus yields the modulus of the type of S, as a value of
                the type universal_integer. See 3.5.4.

159 S'Class'Output
                For every subtype S'Class of a class-wide type T'Class:

160             S'Class'Output denotes a procedure with the following
                specification:

161/2               procedure S'Class'Output(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class;
                       Item   : in T'Class)

162/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.

163 S'Output    For every subtype S of a specific type T:

164             S'Output denotes a procedure with the following specification:

165/2               procedure S'Output(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class;
                       Item : in T)

166             S'Output writes the value of Item to Stream, including any
                bounds or discriminants. See 13.13.2.

167/1 D'Partition_Id
                For a prefix D that denotes a library-level declaration,
                excepting a declaration of or within a declared-pure library
                unit:

168             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.

169 S'Pos       For every discrete subtype S:

170             S'Pos denotes a function with the following specification:

171                 function S'Pos(Arg : S'Base)
                      return universal_integer

172             This function returns the position number of the value of Arg,
                as a value of type universal_integer. See 3.5.5.

172.1/2 R.C'Position
                For a component C of a composite, non-array object R:

172.2/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 the same value as
                R.C'Address - R'Address. The value of this attribute is of the
                type universal_integer. See 13.5.2.

173 S'Pred      For every scalar subtype S:

174             S'Pred denotes a function with the following specification:

175                 function S'Pred(Arg : S'Base)
                      return S'Base

176             {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.

176.1/2 P'Priority
                For a prefix P that denotes a protected object:

176.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.

177/1 A'Range   For a prefix A that is of an array type (after any implicit
                dereference), or denotes a constrained array subtype:

178             A'Range is equivalent to the range A'First .. A'Last, except
                that the prefix A is only evaluated once. See 3.6.2.

179 S'Range     For every scalar subtype S:

180             S'Range is equivalent to the range S'First .. S'Last. See
                3.5.

181/1 A'Range(N)
                For a prefix A that is of an array type (after any implicit
                dereference), or denotes a constrained array subtype:

182             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.

183 S'Class'Read
                For every subtype S'Class of a class-wide type T'Class:

184             S'Class'Read denotes a procedure with the following
                specification:

185/2               procedure S'Class'Read(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class;
                       Item : out T'Class)

186             Dispatches to the subprogram denoted by the Read attribute of
                the specific type identified by the tag of Item. See 13.13.2.

187 S'Read      For every subtype S of a specific type T:

188             S'Read denotes a procedure with the following specification:

189/2               procedure S'Read(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class;
                       Item : out T)

190             S'Read reads the value of Item from Stream. See 13.13.2.

191 S'Remainder For every subtype S of a floating point type T:

192             S'Remainder denotes a function with the following
                specification:

193                 function S'Remainder (X, Y : T)
                      return T

194             {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.

195 S'Round     For every decimal fixed point subtype S:

196             S'Round denotes a function with the following specification:

197                 function S'Round(X : universal_real)
                      return S'Base

198             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.

199 S'Rounding  For every subtype S of a floating point type T:

200             S'Rounding denotes a function with the following
                specification:

201                 function S'Rounding (X : T)
                      return T

202             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.

203 S'Safe_First
                For every subtype S of a floating point type T:

204             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.

205 S'Safe_Last For every subtype S of a floating point type T:

206             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.

207 S'Scale     For every decimal fixed point subtype S:

208             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.

209 S'Scaling   For every subtype S of a floating point type T:

210             S'Scaling denotes a function with the following specification:

211                 function S'Scaling (X : T;
                                        Adjustment : universal_integer)
                      return T

212             {Constraint_Error (raised by failure of run-time check)} 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. {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.

213 S'Signed_Zeros
                For every subtype S of a floating point type T:

214             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.

215 S'Size      For every subtype S:

216             If S is definite, denotes the size (in bits) that the
                implementation would choose for the following objects of
                subtype S:

217               * A record component of subtype S when the record type is
                    packed.

218               * The formal parameter of an instance of
                    Unchecked_Conversion that converts from subtype S to some
                    other subtype.

219             If S is indefinite, the meaning is implementation defined. The
                value of this attribute is of the type universal_integer. See
                13.3.

220/1 X'Size    For a prefix X that denotes an object:

221             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.

222 S'Small     For every fixed point subtype S:

223             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.

224 S'Storage_Pool
                For every access-to-object subtype S:

225             Denotes the storage pool of the type of S. The type of this
                attribute is Root_Storage_Pool'Class. See 13.11.

226 S'Storage_Size
                For every access-to-object subtype S:

227             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.

228/1 T'Storage_Size
                For a prefix T that denotes a task object (after any implicit
                dereference):

229             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.

229.1/2 S'Stream_Size
                For every subtype S of an elementary type T:

229.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:

229.3/2             T'Stream_Size / Ada.Streams.Stream_Element'Size

229.4/2         The value of this attribute is of type universal_integer and
                is a multiple of Stream_Element'Size. See 13.13.2.

230 S'Succ      For every scalar subtype S:

231             S'Succ denotes a function with the following specification:

232                 function S'Succ(Arg : S'Base)
                      return S'Base

233             {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.

234 S'Tag       For every subtype S of a tagged type T (specific or
                class-wide):

235             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.

236 X'Tag       For a prefix X that is of a class-wide tagged type (after any
                implicit dereference):

237             X'Tag denotes the tag of X. The value of this attribute is of
                type Tag. See 3.9.

238 T'Terminated
                For a prefix T that is of a task type (after any implicit
                dereference):

239             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.

240 S'Truncation
                For every subtype S of a floating point type T:

241             S'Truncation denotes a function with the following
                specification:

242                 function S'Truncation (X : T)
                      return T

243             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.

244 S'Unbiased_Rounding
                For every subtype S of a floating point type T:

245             S'Unbiased_Rounding denotes a function with the following
                specification:

246                 function S'Unbiased_Rounding (X : T)
                      return T

247             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.

248 X'Unchecked_Access
                For a prefix X that denotes an aliased view of an object:

249             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.

250 S'Val       For every discrete subtype S:

251             S'Val denotes a function with the following specification:

252                 function S'Val(Arg : universal_integer)
                      return S'Base

253             {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.

254 X'Valid     For a prefix X that denotes a scalar object (after any
                implicit dereference):

255             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.

256 S'Value     For every scalar subtype S:

257             S'Value denotes a function with the following specification:

258                 function S'Value(Arg : String)
                      return S'Base

259             This function returns a value given an image of the value as a
                String, ignoring any leading or trailing spaces. See 3.5.

260/1 P'Version For a prefix P that statically denotes a program unit:

261             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.

262 S'Wide_Image
                For every scalar subtype S:

263             S'Wide_Image denotes a function with the following
                specification:

264                 function S'Wide_Image(Arg : S'Base)
                      return Wide_String

265/2           {image (of a value)} The function returns an image of the
                value of Arg as a Wide_String. See 3.5.

266 S'Wide_Value
                For every scalar subtype S:

267             S'Wide_Value denotes a function with the following
                specification:

268                 function S'Wide_Value(Arg : Wide_String)
                      return S'Base

269             This function returns a value given an image of the value as a
                Wide_String, ignoring any leading or trailing spaces. See
                3.5.

269.1/2 S'Wide_Wide_Image
                For every scalar subtype S:

269.2/2         S'Wide_Wide_Image denotes a function with the following
                specification:

269.3/2             function S'Wide_Wide_Image(Arg : S'Base)
                      return Wide_Wide_String

269.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.

269.5/2 S'Wide_Wide_Value
                For every scalar subtype S:

269.6/2         S'Wide_Wide_Value denotes a function with the following
                specification:

269.7/2             function S'Wide_Wide_Value(Arg : Wide_Wide_String)
                      return S'Base

269.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.

269.9/2 S'Wide_Wide_Width
                For every scalar subtype S:

269.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.

270 S'Wide_Width
                For every scalar subtype S:

271             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.

272 S'Width     For every scalar subtype S:

273             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.

274 S'Class'Write
                For every subtype S'Class of a class-wide type T'Class:

275             S'Class'Write denotes a procedure with the following
                specification:

276/2               procedure S'Class'Write(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class;
                       Item   : in T'Class)

277             Dispatches to the subprogram denoted by the Write attribute of
                the specific type identified by the tag of Item. See 13.13.2.

278 S'Write     For every subtype S of a specific type T:

279             S'Write denotes a procedure with the following specification:

280/2               procedure S'Write(
                       Stream : not null access Ada.Streams.Root_Stream_Type'Class;
                       Item : in T)

281             S'Write writes the value of Item to Stream. See 13.13.2.

Generated by dwww version 1.15 on Sat May 18 09:08:49 CEST 2024.