Справочник Ada 2012
Е.2 Категоризация единиц библиотек
Единицы библиотек можно классифицировать в зависимости от роли, которую они играют в распределённой программе. Определенные ограничения связаны с каждой категорией для обеспечения того, что семантика распределённой программы остаётся близкой к семантике нераспределённой программы.
Предикат категоризации — это предикат единицы библиотеки (см. 10.1.5), который определяет соответствующий аспект категоризации. Аспект категоризации ограничивает объявления, дочерние единицы или семантические зависимости единицы библиотеки, к которой он применяется. Категоризованная единица библиотеки — это единица библиотеки, у которой аспект категоризации имеет значение True.
Предикаты Shared_Passive, Remote_Types и Remote_Call_Interface являются предикатами категоризации, а связанные аспекты — аспектами категоризации. Кроме того, для целей данного приложения аспект Pure (см. 10.2.1) считается аспектом категоризации, а предикат Pure — предикатом категоризации.
Библиотечный пакет или обобщенный библиотечный пакет называется пассивной общей единицей библиотеки, если аспект Shared_Passive единицы имеет значение True. Библиотечный пакет или обобщенный библиотечный пакет называется единицей библиотеки удаленных типов, если аспект Remote_Types единицы имеет значение True. Единица библиотеки называется интерфейсом удалённого вызова, если аспект Remote_Call_Interface имеет значение True. Обычная единица библиотеки — это та, для которой ни один из аспектов категоризации не имеет значения True.
Различные категории единиц библиотек и связанные с ними ограничения описываются в данном и последующих подпунктах. Категории связаны иерархически, так что единицы библиотек одной категории могут семантически зависеть только от единиц библиотек той же категории или более ранней категории в иерархии, за исключением того, что тело единицы библиотеки удалённых типов или интерфейса удалённого вызова не ограничено, объявление единицы библиотеки удалённых типов или интерфейса удалённого вызова может зависеть от предварительно отработанных обычных единиц библиотек, которые упомянуты только в частных с разделах, и все категории могут зависеть от ограниченных представлений.
Общая иерархия (включая объявленную чистую) представлена следующим образом, при этом категория с меньшим номером является «более ранней в иерархии» в смысле предыдущего абзаца:
1.
Объявленная Чистая
2.
Общая пассивная
3.
Удалённые типы
4.
Интерфейс удалённого вызова
5.
Обычная (без ограничений)
Абзацы с 7 по 11 были удалены.
Объявленные чистые и общие пассивные единицы библиотек предварительно отработаны. Объявление единицы библиотеки удалённых типов или интерфейса удалённого вызова должно быть предварительно отработанным.
Абзац 13 был удалён.
Разрешения реализации
Реализации разрешается определять другие предикаты категоризации.