13.4 Enumeration Representation Clauses
Name Resolution Rules
shall be written as a one-dimensional array_aggregate
for which the index subtype is the unconstrained subtype of the enumeration
type, and each component expression is expected to be of any integer
Each component of the array_aggregate
shall be given by an expression
rather than a <>. The expression
given in the array_aggregate
shall be static, and shall specify distinct integer codes for each value
of the enumeration type; the associated integer codes shall satisfy the
predefined ordering relation of the type.
specifies the coding
aspect of representation.
coding consists of the internal code
for each enumeration literal,
that is, the integral value used internally to represent each literal.
For nonboolean enumeration types, if the coding is
not specified for the type, then for each value of the type, the internal
code shall be equal to its position number.
- An implementation should support at
least the internal codes in the range System.Min_Int..System.Max_Int.
An implementation need not support enumeration_representation_clauses
for boolean types.
10 Unchecked_Conversion may be used to
query the internal codes used for an enumeration type. The attributes
of the type, such as Succ, Pred, and Pos, are unaffected by the enumeration_representation_clause
For example, Pos always returns the position number, not
integer code that might have been specified in an enumeration_representation_clause
Example of an enumeration
type Mix_Code is (ADD, SUB, MUL, LDA, STA, STZ);
for Mix_Code use
(ADD => 1, SUB => 2, MUL => 3, LDA => 8, STA => 24, STZ =>33);