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

12.7 Формальные пакеты

Формальные пакеты могут использоваться для передачи пакетов в обобщенные единицы. formal_package_declaration объявляет, что формальный пакет является экземпляром заданного обобщенного пакета. При создании экземпляра фактический пакет должен быть экземпляром этого обобщенного пакета.

Синтаксис

formal_package_declaration ::=
with package идентификатор_объявления is new обобщенный_пакет_имя фактическая_часть_формального_пакета;
фактическая_часть_формального_пакета ::=
(<>) | [фактическая_часть_обобщенного_параметра]

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

обобщенный_пакет_имя должно обозначать обобщенный пакет (шаблон для формального пакета); формальный пакет является экземпляром шаблона.
Фактический пакет должен быть экземпляром шаблона. Если фактическая_часть_формального_пакета равна (<>), то фактический пакет может быть любым экземпляром шаблона; в противном случае каждый фактический параметр фактического экземпляра должен соответствовать соответствующему фактическому параметру формального пакета (будь то фактический параметр, указанный явно или по умолчанию), следующим образом:
  • Для формального объекта режима in фактические значения совпадают, если они являются статическими выражениями с одинаковым значением, или если они статически обозначают ту же константу, или если оба являются литералом null.
  • Для формального подтипа фактические значения совпадают, если они обозначают статически совпадающие подтипы.
  • Для других типов формальных параметров фактические значения совпадают, если они статически обозначают один и тот же объект.
В целях соответствия любой фактический параметр, который является именем формального объекта режима in, заменяется фактическим выражением формального объекта (рекурсивно).

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

formal_package_declaration объявляет формальный обобщенный пакет.
Видимая часть формального пакета включает первый список basic_declarative_items спецификации пакета. Кроме того, если фактическая_часть_формального_пакета равна (<>), она также включает generic_formal_part шаблона для формального пакета.


Spec-Zone.ru

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