Справочник по Ada 95
E.2 Категоризация библиотек
Библиотечные модули могут быть сгруппированы по ролям, которые они выполняют в распределённой программе. Определённые ограничения связаны с каждой категорией, чтобы обеспечить, что семантика распределённой программы остаётся близкой к семантике нераспределённой программы.
Предикат категоризации — это предикат для библиотек (см. 10.1.5), который ограничивает объявления, дочерние модули или семантические зависимости библиотечного модуля, к которому он применяется. Категоризованный библиотечный модуль — это библиотечный модуль, к которому применяется предикат категоризации.
Предикаты Shared_Passive, Remote_Types и Remote_Call_Interface являются предикатами категоризации. Кроме того, для целей данного приложения предикат Pure (см. 10.2.1) считается предикатом категоризации.
Библиотечный пакет или обобщённый библиотечный пакет называется пассивным общим библиотечным модулем, если к нему применяется предикат Shared_Passive. Библиотечный пакет или обобщённый библиотечный пакет называется библиотечным модулем удалённых типов, если к нему применяется предикат Remote_Types. Библиотечный модуль называется интерфейсом удалённого вызова, если к нему применяется предикат Remote_Call_Interface. Обычный библиотечный модуль — это модуль, к которому не применяется ни один предикат категоризации.
Различные категории библиотечных модулей и связанные с ними ограничения описываются в этом пункте и его подпунктах. Категории связаны иерархически, так что библиотечные модули одной категории могут семантически зависеть только от библиотечных модулей этой категории или более ранней категории, за исключением того, что тело библиотечного модуля типа remote types или remote call interface не ограничено.
Общая иерархия (включая объявленные pure):
- Объявленный Pure
- Может зависеть только от других объявленных pure библиотечных модулей;
- Shared Passive
- Может зависеть только от других общих пассивных или объявленных pure библиотечных модулей;
- Remote Types
- Объявление библиотечного модуля может зависеть только от других библиотечных модулей удалённых типов или одного из вышеперечисленных; тело библиотечного модуля не ограничено;
- Remote Call Interface
- Объявление библиотечного модуля может зависеть только от других интерфейсов удалённого вызова или одного из вышеперечисленных; тело библиотечного модуля не ограничено;
- Обычный
- Без ограничений.
Объявленные pure и общие пассивные библиотечные модули предварительно обрабатываются. Объявление библиотечного модуля типа remote types или remote call interface должно быть предварительно обрабатываемым.
Требования к реализации
Этот абзац был удалён.
Разрешения для реализации
Реализации разрешено определять и другие предикаты категоризации.