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

E.2.1 Общие пассивные библиотечные модули

Общий пассивный библиотечный модуль используется для управления глобальными данными, которые совместно используются активными разделами. Ограничения, накладываемые на общие пассивные библиотечные модули, предотвращают доступ к данным или задачам одного активного раздела из другого активного раздела через ссылки, неявные в объектах, объявленных в общем пассивном библиотечном модуле.

Синтаксис

Форма директивы Shared_Passive выглядит следующим образом:
pragma Shared_Passive[(имя_библиотечного_модуля_имя)];

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

Директива Shared_Passive используется для указания того, что библиотечный модуль является общим пассивным библиотечным модулем, то есть что аспект Shared_Passive библиотечного модуля равен True. Для такого библиотечного модуля применяются следующие ограничения:
  • он должен быть предварительно вычисляемым (см. 10.2.1);
  • он должен зависеть семантически только от объявленных чистых или общих пассивных элементов_библиотеки;
  • он не должен содержать объявление на уровне библиотеки типа доступа, обозначающего тип класса, ни типа с частью, являющейся типом задачи или защищенного типа с объявлением_входа;
  • он не должен содержать объявление на уровне библиотеки, содержащее имя, обозначающее тип, объявленный внутри объявленного чистого пакета, если этот тип имеет часть, являющуюся типом доступа; в целях данного правила, рассматриваются части полных представлений любых типов с приватной частью или расширений с приватной частью.
Несмотря на определение доступности, данное в 3.10.2, объявление библиотечного модуля P1 недоступно из области объявления общего пассивного библиотечного модуля P2, если общий пассивный библиотечный модуль P2 не зависит семантически от P1.

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

Общий пассивный библиотечный модуль предварительно вычисляется.

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

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


Spec-Zone.ru

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