Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

J.15.5 Прагмы взаимодействия

Синтаксис

Прагма взаимодействия — это прагма представления, которая является одной из прагм pragma Import, Export или Convention. Их формы следующие:
pragma Import(
[Convention =>] convention_identifier, [Entity =>] local_name
[, [External_Name =>] external_name_string_expression]
[, [Link_Name =>] link_name_string_expression]);
pragma Export(
[Convention =>] convention_identifier, [Entity =>] local_name
[, [External_Name =>] external_name_string_expression]
[, [Link_Name =>] link_name_string_expression]);
pragma Convention([Convention =>] convention_identifier,[Entity =>] local_name);
Для pragma Import и Export, аргумент Link_Name не должен быть указан без аргумента pragma_argument_identifier, если не указан аргумент External_Name.

Правила разрешения имен

Ожидаемый тип для external_name_string_expression и link_name_string_expression в прагме взаимодействия — String.

Правила допустимости

Идентификатор convention_identifier прагмы взаимодействия должен соответствовать имени соглашения (см. B.1).
Прагма Import должна быть завершением объявления. Несмотря на любые другие правила, прагма Import может служить завершением любого типа (явного) объявления, если это поддерживается реализацией для данного типа объявления. Если завершение — прагма Import, то оно должно появиться в той же части объявления, спецификации пакета, определении задачи или определении защищённого типа, что и объявление. Для модуля библиотеки оно должно появиться в том же процессе компиляции, прежде чем любые последующие модули компиляции, кроме прагм. Если local_name обозначает более одного сущности, то прагма Import завершает все их.
external_name_string_expression и link_name_string_expression прагмы Import или Export должны быть статическими.
Имя local_name каждой из этих прагм должно обозначать объявление, которое может иметь указанный аспект с похожим именем.

Статическая семантика

Прагма взаимодействия задаёт различные аспекты сущности, обозначенной local_name, следующим образом:
  • Аспект Convention (см. B.1) — convention_identifier.
  • Прагма Import указывает, что аспект Import (см. B.1) равен True.
  • Прагма Export указывает, что аспект Export (см. B.1) равен True.
  • Для обеих прагм Import и Export, если внешнее имя указано в прагме, аспект External_Name (см. B.1) задаётся как external_name_string_expression. Если имя связи указано в прагме, аспект Link_Name (см. B.1) задаётся как link_name_string_expression.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API