Contents Index Search Previous Next
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
8.5.1).
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
7.6.
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.
Contents Index Search Previous Next Legal