Go to the first, previous, next, last section, table of contents.


12.4 Formal Objects

  1. A generic formal object can be used to pass a value or variable to a generic unit.

    Syntax

  2. formal_object_declaration ::=
       defining_identifier_list : mode subtype_mark
         [:= default_expression];
    

    Name Resolution Rules

  3. The expected type for the default_expression, if any, of a formal object is the type of the formal object.
  4. For a generic formal object of mode in, the expected type for the actual is the type of the formal.
  5. For a generic formal object of mode in out, the type of the actual shall resolve to the type of the formal.

    Legality Rules

  6. If a generic formal object has a default_expression, then the mode shall be in (either explicitly or by default); otherwise, its mode shall be either in or in out.
  7. For a generic formal object of mode in, the actual shall be an expression. For a generic formal object of mode in out, the actual shall be a name that denotes a variable for which renaming is allowed, See section 8.5.1 Object Renaming Declarations.
  8. The type of a generic formal object of mode in shall be nonlimited.

    Static Semantics

  9. A formal_object_declaration declares a generic formal object. The default mode is in. For a formal object of mode in, the nominal subtype is the one denoted by the subtype_mark in the declaration of the formal. For a formal object of mode in out, its type is determined by the subtype_mark in the declaration; its nominal subtype is nonstatic, even if the subtype_mark denotes a static subtype.
  10. In an instance, a formal_object_declaration of mode in declares a new stand-alone constant object whose initialization expression is the actual, whereas a formal_object_declaration of mode in out declares a view whose properties are identical to those of the actual.

    Dynamic Semantics

  11. For the evaluation of a generic_association for a formal object of mode in, a constant object is created, the value of the actual parameter is converted to the nominal subtype of the formal object, and assigned to the object, including any value adjustment -- See section 7.6 User-Defined Assignment and Finalization.

    NOTES

  12. (6) The constraints that apply to a generic formal object of mode in out are those of the corresponding generic actual parameter (not those implied by the subtype_mark that appears in the formal_object_declaration). Therefore, to avoid confusion, it is recommended that the name of a first subtype be used for the declaration of such a formal object.


Go to the first, previous, next, last section, table of contents.