Contents   Index   Search   Previous   Next
 12.5.3 Formal Array Types
1
   The class determined for a formal array type is
the class of all array types. 
Syntax
2
formal_array_type_definition
::= array_type_definition 
Legality Rules
3
   The only form of discrete_subtype_definition
that is allowed within the declaration of a generic formal (constrained)
array subtype is a subtype_mark.
4
   For a formal array
subtype, the actual subtype shall satisfy the following conditions: 
5
- The formal array type and the actual
array type shall have the same dimensionality; the formal subtype and
the actual subtype shall be either both constrained or both unconstrained.
6
- For each index position, the index
types shall be the same, and the index subtypes (if unconstrained), or
the index ranges (if constrained), shall statically match (see 4.9.1).
7
- The component subtypes of the formal
and actual array types shall statically match. 
8
- If the formal type has aliased components,
then so shall the actual. 
Examples
9
   Example of formal
array types: 
10
--  given the generic package 
11
generic
   type Item   is private;
   type Index  is (<>);
   type Vector is array (Index range <>) of Item;
   type Table  is array (Index) of Item;
package P is
   ...
end P;
12
--  and the types 
13
type Mix    is array (Color range <>) of Boolean;
type Option is array (Color) of Boolean;
14
--  then Mix can match Vector and Option can match Table 
15
package R is new P(Item   => Boolean, Index => Color,
                   Vector => Mix,     Table => Option);
16
--  Note that Mix cannot match Table and Option cannot match Vector
Contents   Index   Search   Previous   Next   Legal