Ada Reference Manual (Ada 2022)Legal Information
Contents   Index   References   Search   Previous   Next 

12.5.3 Formal Array Types

1/2
The category determined for a formal array type is the category 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   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe