Справочник Ada 95
C.4 Требования к Предварительной Элаборации
Этот пункт определяет дополнительные требования к реализации и документации для директивы Preelaborate (см. 10.2.1).
Требования к Реализации
Реализация не должна иметь никаких накладных расходов во время выполнения для проверок элаборации подпрограмм и protected_bodies, объявленных в предварительно элаборированных библиотечных модулях.
Реализация не должна выполнять никаких операций записи в память после загрузки для элаборации константных объектов, объявленных непосредственно внутри декларативной области предварительно элаборированного библиотечного пакета, при условии, что тип подтипа и начальное выражение (или начальные выражения по умолчанию, если инициализируются по умолчанию) object_declaration удовлетворяют следующим ограничениям. Значение времени загрузки определяется реализацией.
- Любой subtype_mark обозначает статически ограниченный подтип со статически ограниченными подкомпонентами, если таковые имеются;
- любое constraint является статическим ограничением;
- любой allocator предназначен для типа доступа к константе;
- любое использование предопределенных операторов встречается только в статических выражениях;
- любые primaries, которые являются names, кроме attribute_references для атрибутов Access или Address, появляются только в статических выражениях;
- любое name, которое не является частью статического выражения, представляет собой расширенное имя или direct_name, которое статически обозначает некоторый объект;
- любой discrete_choice из array_aggregate является статическим;
- никакая языковая проверка, связанная с элаборацией object_declaration, не может завершиться ошибкой.
Требования к Документации
Реализация должна документировать любые обстоятельства, при которых элаборация предварительно элаборированного пакета приводит к выполнению кода во время выполнения.
Реализация должна документировать, позволяет ли используемый метод инициализации предварительно элаборированных переменных возобновить раздел без перезагрузки.
Рекомендации по Реализации
Рекомендуется реализовывать предварительно элаборированные пакеты таким образом, чтобы выполнение кода во время выполнения для элаборации объектов, не охваченных Требованиями к Реализации, было минимальным или отсутствовало.