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