13.3. СПЕЦИФИКАТОРЫ ПРЕДСТАВЛЕНИЯ ПЕРЕЧИСЛЕНИЯ

Спецификатор представления перечисления задает внутренние коды для литералов перечислимого типа, указанного в спецификаторе.

спецификатор-представления-перечисления ::=   for простое-имя-типа use агрегат;

Используемый в спецификаторе агрегат записывается как одномерный агрегат, в кото ром подтип индекса — перечислимый тип, а тип компоненты — универсальный-целый тип.

Для всех литералов перечислимого типа должны быть заданы различные целые коды, и все выборы и значения всех компонент в агрегате должны быть статическими. Целые коды, заданные для перечислимого типа, должны удовлетворять предопределенному отношению упорядоченности типа.

Пример:

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);

Примечание. Атрибуты SUCC, PRED и PCS определены даже для перечислимых типов с разрывным представлением; их определение соответствует (логическому) описанию типа, и на них не влияет спецификатор представления перечисления. В примере из-за того, что значения даны с пропуском, эти функции реализуются менее эффективно, чем это могло быть в отсутствие спецификатора представления. Это же справедливо и при использовании таких типов для индексации.

Ссылки: агрегат 4.3, агрегат массива 4.3.2, атрибут перечислимого типа 3.5.5, выбор 3.7.3, индекс 3.6, индексируемый тип 3.6, компонента 3.3, литерал 4.2, литерал перечисления 3.5.1, описание типа 3.3.1, отношение упорядоченности для перечислимого типа 3.5.1, перечислимый тип 3.5.1, подтип индекса 3.6, простое имя 4.1, спецификатор представления 13.1, статическое выражение 4.9, тип 3.3, универсальный-целый тип 3.5.4, функция 6.5.