- (1)
- The class determined for a formal array type is the class of all array
types.
(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
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12