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

10.1.5 Предикаты и программные модули

В этом подпункте рассматриваются предикаты, относящиеся к программным модулям, библиотечным модулям и компиляциям.

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

Определенные предикаты являются предикатными инструкциями программных модулей. Имя, используемое в качестве аргумента предиката программного модуля, должно разрешаться таким образом, чтобы обозначать объявления или переименования одного или нескольких программных модулей, которые встречаются непосредственно в области объявления или в компиляции, где непосредственно расположен данный предикат, или оно должно разрешаться для обозначения объявления непосредственно окружающего программного модуля (если таковой имеется); предикат применяется к обозначенному(ым) программному модулю(ям). Если в качестве аргументов не указаны имена, предикат применяется к непосредственно окружающему программному модулю.

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

Предикат программного модуля должен быть размещен в одном из следующих мест:
  • В месте единицы_компиляции, в этом случае предикат должен следовать непосредственно в той же компиляции (за исключением других предикатов) после объявления_модуля_библиотеки, являющегося объявлением_подпрограммы, объявлением_подпрограммы_с_параметром_типа или инстанциацией_параметра_типа, и предикат должен иметь аргументом имя, обозначающее это объявление.
  • Непосредственно внутри видимой части программного модуля и перед любым вложенным объявлением (но не внутри формальной части параметра типа), в этом случае аргумент, если он есть, должен быть прямым_именем, который обозначает объявление непосредственно окружающего программного модуля.
  • В месте объявления, отличного от первого, части объявления или объявления программного модуля, в этом случае предикат должен иметь аргумент, который должен быть прямым_именем, обозначающим один или несколько из следующих (и ничего другого): объявление_подпрограммы, объявление_подпрограммы_с_параметром_типа или инстанциация_параметра_типа той же части объявления или объявления программного модуля.
Некоторые предикат программного модуля определены как предикаты модулей библиотеки. Имя, если таковое имеется, в предикате модуля библиотеки должно обозначать объявление модуля библиотеки.

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

Предикат модуля библиотеки, который применяется к обобщенному модулю, не применяется к его экземплярам, если для предиката нет специального правила, определяющего обратное.

Правила после компиляции

Определенные предикаты определяются как предикаты конфигурации; они должны появляться перед первой единицей_компиляции компиляции. Они обычно используются для выбора параметра, относящегося к всему разделу или системе. Предикат применяется ко всем единицам_компиляции, появляющимся в компиляции, если таковые отсутствуют, в противном случае он применяется ко всем будущим единицам_компиляции, скомпилированным в ту же среду.

Разрешения для реализации

Реализация может потребовать, чтобы предикат конфигурации, выбирающий параметры для всего раздела или системы, был скомпилирован, когда среда не содержит элементов_библиотеки, кроме тех, что относятся к предопределенной среде. В этом случае реализация все равно должна принимать предикат конфигурации в отдельных компиляциях, которые подтверждают первоначально выбранные параметры для всего раздела или системы.

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

При применении к обобщенному модулю предикат программного модуля, не являющийся предикатом модуля библиотеки, должен применяться к каждому экземпляру обобщенного модуля, для которого нет переопределяющего предиката, примененного непосредственно к экземпляру.


Spec-Zone.ru

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