Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

E.2.2 Библиотечные модули удаленных типов

Библиотечный модуль удаленных типов поддерживает определение типов, предназначенных для использования в обмене данными между активными разделами.

Синтаксис

Форма директивы Remote_Types выглядит следующим образом:
pragma Remote_Types[(имя_модуля_имя)];

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

Библиотечный модуль удаленных типов — это библиотечный модуль, к которому применяется директива Remote_Types. К декларации такого модуля применяются следующие ограничения:
  • он должен быть предварительно вычисляемым;
  • он должен зависеть семантически только от объявленных чистых, общих пассивных или других библиотечных модулей удаленных типов;
  • он не должен содержать объявления никаких переменных во видимой части библиотечного модуля;
  • полный вид каждого типа, объявленного в видимой части библиотечного модуля, имеющего доступные атрибуты потока, должен поддерживать внешнюю сериализацию (см. 13.13.2).
Тип доступа, объявленный в видимой части библиотечного модуля удаленных типов или библиотечного модуля удаленных вызовов, называется удаленным типом доступа. Такой тип должен быть:
  • типом доступа к подпрограмме, или
  • общим типом доступа, который обозначает общетиповой ограниченный закрытый тип или общетиповое расширение закрытого типа, все предки которого являются либо расширениями закрытых типов, либо ограниченными закрытыми типами.
Тип, производный от удаленного типа доступа, также является удаленным типом доступа.
Следующие ограничения применяются к использованию удаленного типа доступа к подпрограмме:
  • Значение удаленного типа доступа к подпрограмме должно преобразовываться только в другой (совместимый по типу подтипам) удаленный тип доступа к подпрограмме;
  • Префикс префикса Атрибута доступа ссылка_на_атрибут, который возвращает значение удаленного типа доступа к подпрограмме, должен статически обозначать (совместимую по типу подтипам) удаленную подпрограмму.
Следующие ограничения применяются к использованию удаленного типа доступа к общетиповому типу:
  • Базовые подпрограммы соответствующего конкретного ограниченного закрытого типа должны иметь только параметры доступа, если они являются управляющими формальными параметрами; каждый неуправляющий формальный параметр должен поддерживать внешнюю сериализацию (см. 13.13.2);
  • Значение удаленного типа доступа к общетиповому типу должно явно преобразовываться только в другой удаленный тип доступа к общетиповому типу;
  • Значение удаленного типа доступа к общетиповому типу должно быть дериференцировано (или неявно преобразовано в анонимный тип доступа) только в рамках вызова диспетчеризации, где значение обозначает управляемый операнд вызова (см. E.4, «Вызовы удаленных подпрограмм»).
  • Атрибут Storage_Pool не определен для удаленного типа доступа к общетиповому типу; ожидаемый тип для аллокатора не должен быть удаленным типом доступа к общетиповому типу. Удаленный тип доступа к общетиповому типу не должен быть фактическим параметром для формального типа доступа к обобщенному типу. Атрибут Storage_Size удаленного типа доступа к общетиповому типу возвращает 0; он не допускается в определении_атрибута_описания.
ПРИМЕЧАНИЯ
5 Библиотечный модуль удаленных типов не обязательно должен быть чистым, и определенные им типы могут включать уровни косвенности, реализованные с помощью типов доступа. Пользовательские атрибуты Read и Write (см. 13.13.2) обеспечивают отправку значений такого типа между активными разделами, где Write обрабатывает представление, а Read разбирает любые уровни косвенности.


Spec-Zone.ru

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