Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

C.5 Аспект Discard_Names

Указание аспекта Discard_Names позволяет уменьшить объём памяти, используемый для хранения имён сущностей с текстом имени во время выполнения.

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

Сущность с текстом имени во время выполнения — это непроизводный перечислительный первый подтип, первый подтип с тегом или исключение.
Для сущности с текстом имени во время выполнения может быть указан следующий определённый языком аспект:
Discard_Names

Тип аспекта Discard_Names — Boolean. Если напрямую указан, то определение_аспекта должен быть статическим выражением. Если не указан (включая наследование), аспект равен False.

Синтаксис

Форма псевдонима Discard_Names:
pragma Discard_Names[([On => ] локальное_имя)];
Псевдоним Discard_Names разрешён только непосредственно внутри части_объявления, непосредственно внутри спецификации_пакета или в качестве конфигурационного псевдонима.

Правила допустимости

Локальное_имя (если указано) должно обозначать сущность с текстом имени во время выполнения. Псевдоним указывает, что аспект Discard_Names для типа или исключения имеет значение True. Без локального_имени псевдоним указывает, что все сущности с текстом имени во время выполнения, объявленные после псевдонима в той же области объявления, имеют значение True для аспекта Discard_Names. В качестве альтернативы, псевдоним может быть использован как конфигурационный псевдоним. Если конфигурационный псевдоним Discard_Names применяется к единице компиляции, все сущности с текстом имени во время выполнения, объявленные в единице компиляции, имеют значение True для аспекта Discard_Names.

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

Если задано локальное_имя, то псевдоним Discard_Names является псевдонимом представления.
Если аспект Discard_Names имеет значение True для типа перечисления, то семантика атрибутов Wide_Wide_Image и Wide_Wide_Value для этого типа определяется реализацией; семантика атрибутов Image, Wide_Image, Value и Wide_Value по-прежнему определяется в терминах Wide_Wide_Image и Wide_Wide_Value. Кроме того, семантика Text_IO.Enumeration_IO определяется реализацией. Если аспект Discard_Names имеет значение True для типа с тегом, то семантика функции Tags.Wide_Wide_Expanded_Name для этого типа определяется реализацией; семантика функций Tags.Expanded_Name и Tags.Wide_Expanded_Name по-прежнему определяется в терминах Tags.Wide_Wide_Expanded_Name. Если аспект Discard_Names имеет значение True для исключения, то семантика функции Exceptions.Wide_Wide_Exception_Name для этого исключения определяется реализацией; семантика функций Exceptions.Exception_Name и Exceptions.Wide_Exception_Name по-прежнему определяется в терминах Exceptions.Wide_Wide_Exception_Name.

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

Если аспект Discard_Names имеет значение True для сущности, реализация должна уменьшить объём памяти, используемый для хранения имён, связанных с этой сущностью.


Spec-Zone.ru

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