3.5.1 Enumeration Types
Syntax
Legality Rules
Static Semantics
Each enumeration literal corresponds to a distinct
value of the enumeration type, and to a distinct position number.
The
position number of the value of the first listed enumeration literal
is zero; the position number of the value of each subsequent enumeration
literal is one more than that of its predecessor in the list.
The predefined order relations between values of
the enumeration type follow the order of corresponding position numbers.
Dynamic Semantics
The
elaboration of an
enumeration_type_definition
creates the enumeration type and its first subtype, which is constrained
to the base range of the type.
When called, the parameterless function associated
with an enumeration literal returns the corresponding value of the enumeration
type.
24 If an enumeration literal occurs in
a context that does not otherwise suffice to determine the type of the
literal, then qualification by the name of the enumeration type is one
way to resolve the ambiguity (see
4.7).
Examples
Examples of enumeration
types and subtypes:
type Day is (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
type Suit is (Clubs, Diamonds, Hearts, Spades);
type Gender is (M, F);
type Level is (Low, Medium, Urgent);
type Color is (White, Red, Yellow, Green, Blue, Brown, Black);
type Light is (Red, Amber, Green); -- Red and Green are overloaded
type Hexa is ('A', 'B', 'C', 'D', 'E', 'F');
type Mixed is ('A', 'B', '*', B, None, '?', '%');
subtype Weekday is Day range Mon .. Fri;
subtype Major is Suit range Hearts .. Spades;
subtype Rainbow is Color range Red .. Blue; -- the Color Red, not the Light