3.6.1 Index Constraints and Discrete Ranges
An
index_constraint
determines the range of possible values for every index of an array subtype,
and thereby the corresponding array bounds.
Syntax
Name Resolution Rules
Legality Rules
Static Semantics
Dynamic Semantics
An
index_constraint
is
compatible with an unconstrained array subtype if and only
if the index range defined by each
discrete_range
is compatible (see
3.5) with the corresponding
index subtype.
If any of the
discrete_ranges
defines a null range, any array thus constrained is a
null array,
having no components.
An array value
satisfies
an
index_constraint
if at each index position the array value and the
index_constraint
have the same index bounds.
NOTE 2 Even if an array value does
not satisfy the index constraint of an array subtype, Constraint_Error
is not raised on conversion to the array subtype, so long as the length
of each dimension of the array value and the array subtype match. See
4.6.
Examples
Examples of array
declarations including an index constraint:
Board : Matrix(1 .. 8, 1 .. 8); --
see 3.6
Rectangle : Matrix(1 .. 20, 1 .. 30);
Inverse : Matrix(1 .. N, 1 .. N); --
N can be nonstatic
Filter : Bit_Vector(0 .. 31); --
see 3.6
Example of array
declaration with a constrained array subtype:
My_Schedule : Schedule; -- all arrays of type Schedule have the same bounds
Example of record
type with a component that is an array:
type Var_Line(Length : Natural) is
record
Image : String(1 .. Length);
end record;
Null_Line : Var_Line(0); -- Null_Line.Image is a null array
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe