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

B.2 Интерфейсы пакетов

Пакет Interfaces является родителем нескольких пакетов библиотек, которые объявляют типы и другие сущности, полезные для взаимодействия с внешними языками. Он также содержит некоторые типы, определяемые реализацией, которые полезны для взаимодействия с несколькими языками (в частности, для взаимодействия с языком ассемблера).

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

Пакет библиотек Interfaces имеет следующее скелетное объявление:

package Interfaces is
pragma Pure(Interfaces);
type Integer_n is range -2**(n-1) .. 2**(n-1) - 1; --2's complement
type Unsigned_n is mod 2**n;
function Shift_Left (Value : Unsigned_n; Amount : Natural)
return Unsigned_n;
function Shift_Right (Value : Unsigned_n; Amount : Natural)
return Unsigned_n;
function Shift_Right_Arithmetic (Value : Unsigned_n; Amount : Natural)
return Unsigned_n;
function Rotate_Left (Value : Unsigned_n; Amount : Natural)
return Unsigned_n;
function Rotate_Right (Value : Unsigned_n; Amount : Natural)
return Unsigned_n;
...
end Interfaces;

Требования к реализации

Реализация должна предоставить следующие объявления в видимой части пакета Interfaces:
  • Определенные и модульные целочисленные типы с n битами, если это поддерживается целевой архитектурой, для каждого n, которое, как минимум, равно размеру элемента хранения и является множителем размера слова. Имена этих типов имеют вид Integer_n для типизированных целых чисел и Unsigned_n для модульных типов;
  • Для каждого такого модульного типа в Interfaces, подпрограммы сдвига и вращения, как указано в объявлении Interfaces выше. Эти подпрограммы являются внутренними. Они работают на основе бит, используя двоичное представление значения операндов для получения двоичного представления результата. Параметр Amount определяет количество сдвигаемых или поворачиваемых битов. При сдвиге сдвигаются нулевые биты, за исключением Shift_Right_Arithmetic, где сдвигаются единичные биты, если Value составляет как минимум половину модуля.
  • Типы с плавающей точкой, соответствующие каждому формату с плавающей точкой, полностью поддерживаемому аппаратным обеспечением.
Поддержка взаимодействия с любым внешним языком является необязательной. Однако, реализация не должна предоставлять никаких атрибутов, модулей библиотек или директив, имеющих такое же имя, как атрибут, модуль библиотеки или директива (соответственно), указанные в следующих разделах этого приложения, если предоставляемая конструкция не указана в этих разделах или не обладает более ограниченными возможностями, чем требуется этими разделами. Программа, которая пытается использовать неподдерживаемую возможность данного приложения, должна быть идентифицирована реализацией до времени выполнения или должна генерировать исключение во время выполнения.

Разрешения для реализации

Реализация может предоставлять определенные реализацией модули библиотек, которые являются потомками Interfaces, и может добавлять объявления в видимую часть Interfaces в дополнение к вышеописанным.
Дочерний пакет пакета Interfaces с именем соглашения может предоставляться независимо от того, поддерживается ли соглашение директивой Convention и наоборот. Такой дочерний пакет должен содержать любые объявления, которые были бы полезны для взаимодействия с языком (реализацией), представленным соглашением. Любые объявления, полезные для взаимодействия с любым языком на данной архитектуре аппаратного обеспечения, должны быть предоставлены непосредственно в Interfaces.

Рекомендации для реализации

Этот абзац был удален.
Реализация, поддерживающая интерфейс с C, COBOL или Fortran, должна предоставить соответствующие пакеты, описанные в следующих разделах.


Spec-Zone.ru

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