Spec-Zone.ru › Ada 95
Справочник по Ada 95

13.4 Описания представления перечислений

Описание enumeration_representation_clause указывает внутренние коды для литералов перечисления.

Синтаксис

enumeration_representation_clause ::=
for first_subtype_local_name use enumeration_aggregate;
enumeration_aggregate ::= array_aggregate

Правила разрешения имен

enumeration_aggregate должен быть записан в виде одномерного array_aggregate, для которого тип индекса — это не ограниченный тип перечисления, а каждое выражение компонента ожидается быть любого целочисленного типа.

Правила легальности

first_subtype_local_name в enumeration_representation_clause должен указывать на подтип перечисления.
Выражения, заданные в array_aggregate, должны быть статическими и должны указывать различные целочисленные коды для каждого значения типа перечисления; связанные целочисленные коды должны удовлетворять предопределённому отношению порядка типа.

Статическая семантика

Описание enumeration_representation_clause определяет аспект кодирования представления. Кодирование состоит из внутреннего кода для каждого литерала перечисления, то есть целого значения, используемого внутри для представления каждого литерала.

Требования к реализации

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

Рекомендации по реализации

Рекомендуемый уровень поддержки enumeration_representation_clauses:
  • Реализация должна поддерживать по крайней мере внутренние коды в диапазоне System.Min_Int..System.Max_Int. Реализация не обязана поддерживать enumeration_representation_clauses для булевых типов.
ПРИМЕЧАНИЯ
11 Функция Unchecked_Conversion может использоваться для запроса внутренних кодов, используемых для типа перечисления. Атрибуты типа, такие как Succ, Pred и Pos, не затрагиваются описанием enumeration_representation_clause. Например, Pos всегда возвращает номер позиции, а не внутренний целочисленный код, который мог быть задан в enumeration_representation_clause.

Примеры

Пример описания представления перечисления:
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);


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API