Запросы определения категорий программных модулей
Данная небольшая библиотека предоставляет набор запросов для
определения категории модулей Ада-программы. Вы можете скачать
архив (10К) здесь.
Перед рассмотрением запросов определения принадлежности программных модулей
языка Ada различным категориям необходимо отметить, что стандарт языка
определяет две "шкалы" категоризации.
С точки зрения процесса элаборации модули разделяются на предэлаборируемые
и нормальные.
С точки зрения поддержки распределенных вычислений модули подразделяются
на категории Declared Pure, Shared Passive, Remote Types, Remote Call
Interface. Модули, попадающие в одну из этих категорий, являются
категоризованными, а все остальные - некатегоризованными.
В категорию предэлаборируемых модулей входят модули категорий Declared Pure и
Shared Passive. Кроме этого предэлаборируемыми являются модули, явно
объявленные таковыми посредством директивы компилятора pragma Preelaborate.
Необходимо отметить, что возможно совмещение категорий разных шкал для одного
модуля. Так, например, модуль стандартной библиотеки Ada.Finalization является
одновременно предэлаборируемым и Remote_Types.
Таблица 1.
Соответствие категорий распределенных вычислений категориям
элаборации. Допустимость совмещения категории распределенных вычислений с
категорией явно определенных как предэлабориремые.
| | Предэлаборируемый | Нормальный | Явное использование pragma Preelaborate | | Declared Pure | + | | | | Shared Passive | + | | o | | Remote Types | x | x | o | | Remote Call Interface | x | x | o | | Некатегоризованный | x | x | o |
Где:
| + - является | | x - при явном наличии в спецификации директивы
компилятора pragma Preelaborate является
предэлаборируемым, при отсутствии - не является.
| | o - допустимо |
-
Запрос определения принадлежности модуля категории Declared Pure. Основанием
для принадлежности модуля этой категории является наличие в его спецификации
директивы компилятора pragma Pure.
-
Запрос определения принадлежности модуля категории Shared Passive.
Основанием для принадлежности модуля этой категории является наличие в его
спецификации директивы компилятора pragma Shared_Passive.
-
Запрос определения принадлежности модуля категории Remote_Types. Основанием
для принадлежности модуля этой категории является наличие в его спецификации
директивы компилятора pragma Remote_Types.
-
Запрос определения принадлежности модуля категории Remote Call Interface.
Основанием для принадлежности модуля этой категории является наличие в его
спецификации директивы компилятора pragma Remote_Call_Interface.
-
Запрос определения принадлежности модуля к одной из категорий по шкале
категоризации поддержки распределенных вычислений.
-
Запрос определения принадлежности модуля к категории предэлаборируемых.
Основанием для принадлежности модуля этой категории является наличие в его
спецификации одной из директив компилятора pragma Pure, pragma Preelaborate,
pragma Shared_Passive.
-
Запрос явной принадлежности модуля категории предэлаборируемых. Основанием
для принадлежности модуля этой категории является наличие в его спецификации
директивы компилятора pragma Preelaborate.
Вадим Годунко. Май 2003г.
|