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