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

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