Go to the first, previous, next, last section, table of contents.
-
A generic formal object can be used to pass a value or variable to a
generic unit.
Syntax
-
formal_object_declaration ::=
defining_identifier_list : mode subtype_mark
[:= default_expression];
Name Resolution Rules
-
The expected type for the default_expression, if any, of a formal object
is the type of the formal object.
-
For a generic formal object of mode in, the expected type for the actual
is the type of the formal.
-
For a generic formal object of mode in out, the type of the actual shall
resolve to the type of the formal.
Legality Rules
-
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.
-
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.
-
The type of a generic formal object of mode in shall be nonlimited.
Static Semantics
-
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.
-
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
-
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
-
(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.