[Home][Index]

Annex K - informative

Language-Defined Attributes

  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

  39.  For every subtype S of a floating point type T:

  40.  S'Compose denotes a function with the following specification:
      function S'Compose (Fraction : T;
      Exponent : universal_integer)
      return T

  41.  Let v be the value Fraction*T'Machine_Radix**(Exponent-k), wher
      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 rang
      (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 t
      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
      For every subtype S:

  146.  Denotes the maximum value for Size_In_Storage_Elements that will
      be requested via Allocate for an access type whose designated subtype
      is S. The value of this attribute is of type universal_integer.
    See
      13.11.1
    .

  147. S'Min
      For every scalar subtype S:

  148.  S'Min denotes a function with the following specification:

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

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

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

  152.  S'Model denotes a function with the following specification:

  153.  function S'Model (X : T)
      return T

  154.  If the Numerics Annex is not supported, the meaning of this attribute
      is implementation defined;
    see G.2.2 for the definition that applies to
      implementations supporting the Numerics Annex. See A.5.3.

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

  156.  If the Numerics Annex is not supported, this attribute yields an
      implementation defined value that is greater than or equal to the
      value of T'Machine_Emin.
    See G.2.2 for further requirements that
      apply to implementations supporting the Numerics Annex. The value
      of this attribute is of the type universal_integer. See A.5.3.

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

  158.  Yields the value T'Machine_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
      For every subtype S:

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

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

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

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

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



[Home][Index]


techpubs@rational.com

Copyright © 1993-1999, Rational Software Corporation. All rights reserved.