12.5.3 Formal Array Types

From OC Systems Wiki!
Jump to: navigation, search

The class determined for a formal array type is the class of all array types.

Syntax

formal_array_type_definition ::= array_type_definition

Legality Rules

The only form of discrete_subtype_definition that is allowed within the declaration of a generic formal (constrained) array subtype is a subtype_mark.

For a formal array subtype, the actual subtype shall satisfy the following conditions:

  • 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.
  • 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).
  • The component subtypes of the formal and actual array types shall statically match.
  • If the formal type has aliased components, then so shall the actual.

Examples

Example of formal array types:

    --  given the generic package 

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;

--  and the types 

type Mix    is array (Color range <>) of Boolean;
type Option is array (Color) of Boolean;

--  then Mix can match Vector and Option can match Table 

package R is new P(Item   => Boolean, Index => Color, 
                Vector => Mix,     Table => Option);

--  Note that Mix cannot match Table and Option cannot match Vector

Copyright © 1992,1993,1994,1995 Intermetrics, Inc.
Copyright © 2000 The MITRE Corporation, Inc. Ada Reference Manual