Приложения

Приложение A: Формальные типы настройки

Следующие таблицы содержат примеры доступных формальных типов настраиваемых модулей:

Формальный тип

Фактический тип

Неполный тип

Формат: type T;

Любой тип

Дискретный тип

Формат: type T is (<>);

Любой целочисленный тип, модульный тип или перечислимый тип

Тип диапазона

Формат: type T is range <>;

Любой целочисленный тип со знаком

Модульный тип

Формат: type T is mod <>;

Любой модульный тип

Тип с плавающей запятой

Формат: type T is digits <>;

Любой тип с плавающей запятой

Двоичный тип с фиксированной запятой

Формат: type T is delta <>;

Любой двоичный тип с фиксированной запятой

Десятичный тип с фиксированной запятой

Формат: type T is delta <> digits <>;

Любой десятичный тип с фиксированной запятой

Определенный нелимитируемый личный тип

Формат: type T is private;

Любой нелимитируемый, определенный тип

Нелимитируемый личный тип с дискриминантом

Формат: type T (D : DT) is private;

Любой нелимитируемый тип с дискриминантом

Ссылочный тип

Формат: type A is access T;

Любой ссылочный тип для типа T

Определенный производный тип

Формат: type T is new B;

Любой конкретный тип, производный от базового типа B

Лимитируемый частный тип

Формат: type T is limited private;

Любой определенный тип, лимитируемый или нет

Неполное описание тегового типа

Формат: type T is tagged;

Любой конкретный, определенный, теговый тип

Определенный теговый личный тип

Формат: type T is tagged private;

Любой конкретный, определенный, теговый тип

Определенный теговый лимитируемый личный тип

Формат: type T is tagged limited private;

Любой конкретный определенный теговый тип лимитируемый или нет.

Определенный абстрактный теговый личный тип

Формат: type T is abstract tagged private;

Любой нелимитируемый, определенный теговый тип абстрактный или конкретный

Определенный абстрактный теговый лимитируемый личный тип

Формат: type T is abstract tagged limited private;

Любой определенный теговый тип, лимитир-мый или нет, абстрактный или конкретный

Определенный производный теговый тип

Формат: type T is new B with private;

Любой конкретный теговый тип, производный от базового типа B

Определенный абстрактный производный теговый тип

Формат: type T is abstract new B with private;

Любой теговый тип, производный от базового типа B абстрактный или конкретный

Тип массива

Формат: type A is array (R) of T;

Любой тип массива с диапазоном R, содержащий элементы типа T

Интерфейсный тип

Формат: type T is interface;

Любой интерфейсный тип

Лимитируемый интерфейсный тип

Формат: type T is limited interface;

Любой лимитируемый интерфейсный тип

Задачный интерфейсный тип

Формат: type T is task interface;

Любой задачный интерфейсный тип

Синхронизированный интерфейсный тип

Формат: type T is synchronized interface;

Любой синхронизированный интерфейсный тип

Защищенный интерфейсный тип

Формат: type T is protected interface;

Любой защищенный интерфейсный тип

Производный интерфейсный тип

Формат: type T is new B and I with private;

Любой тип, производный от базового типа B и интерфейса I

Производный тип с несколькими интерфейсами

Формат: type T is new B and I1 and I2 with private;

Любой тип, производный от базового типа B и интерфейсов I1 и I2

Абстрактный производный интерфейсный тип

Формат: type T is abstract new B and I with private;

Любой тип, производный от абстрактного базового типа B и интерфейса I

Лимитируемый производный интерфейсный тип

Формат: type T is limited new B and I with private;

Любой тип, производный от лимитируемого базового типа B и лимитируемого интерфейса

Абстрактный лимитируемый производный интерфейсный тип

Формат: type T is abstract limited new B and I with private;

Любой тип, производный от абстрактного лимитиру емого базового типа B и лимитируемого интерфейса

Синхронизированный интерфейсный тип

Формат: type T is synchronized new SI with private;

Любой тип, производный от синхронизированного интерфейсного типы SI

Абстрактный синхронизированный интерфейсный тип

Формат: type T is abstract synchronized new SI with private;

Любой тип, производный от синхронизированного интерфейса SI

Неопределенные версии типов

Многие из приведенных выше примеров могут быть использованы для формальных неопределенных типов:

Формальный тип

Фактический тип

Неопределенный неполный тип

Формат: type T (<>);

Любой тип

Неопределенный нелимитируемый личный тип

Формат: type T (<>) is private;

Любой нелимитируемый тип неопределенный или определенный

Неопределенный лимитируемый личный тип

Формат: type T (<>) is limited private;

Любой тип, лимитируемый или нет, неопределенный или определенный

Неполный неопределенный личный теговый тип

Формат: type T (<>) is tagged;

Любой конкретный теговый тип, неопределенный или определенный

Неопределенный теговый личный тип

Формат: type T (<>) is tagged private;

Любой конкретный, нелимитируемый теговый тип, неопределенный или определенный

Неопределенный теговый лимитируемый личный типми

Формат: type T (<>) is tagged limited private;

Любой конкретный теговый тип, лимитируемый или нет, неопределенный или определенный

Неопределенный абстрактный теговый личный тип

Формат: type T (<>) is abstract tagged private;

Любой нелимитируемый тег овый тип, неопределенный или определенный, абстрактный или конкретный

Неопределенный абстрактный теговый лимитируемый личный тип

Формат: type T (<>) is abstract tagged limited private;

Любой теговый тип, лимитируемый или нет, неопределенный или определенный,абстрактный или конкретный

Неопределенный производный теговый тип

Формат: type T (<>) is new B with private;

Любой теговый тип, производный от базового типа B, неопределенный или определенный

Неопределенный абстрактный производный теговый тип

Формат: type T (<>) is abstract new B with private;

Любой тегоый тип, производный от базового типа B, неопределенный или определенный абстрактный или конкретный

Те же примеры могут также содержать дискриминанты. В этом случае, (<>) заменяется списком дискриминантов, например: (D: DT).

Приложение B: Контейнеры

В следующей таблице показаны все контейнеры, доступные в Аде, включая их версии (стандартный, ограниченный, неограниченный, неопределенный):

Категория

Контейнер

Std

Bounded

Unbounded

Indefinite

Вектор

Vectors

Y

Y

Y

Список

Doubly Linked Lists

Y

Y

Y

Отображение

Hashed Maps

Y

Y

Y

Отображение

Ordered Maps

Y

Y

Y

Множество

Hashed Sets

Y

Y

Y

Множество

Ordered Sets

Y

Y

Y

Дерево

Multiway Trees

Y

Y

Y

Универсальн

Holders

Y

Очередь

Synchronized Queue Interfaces

Y

Очередь

Synchronized Queues

Y

Y

Очередь

Priority Queues

Y

Y

Note

Чтобы получить имя пакета контейнера, замените пробел на _ в его названии. (Например, пакет для Hashed Maps называется Hashed_Maps.)

В следующей таблице представлены префиксы, применяемые к имени контейнера, которые зависят от его версии. Как указано в таблице, стандартная версия не имеет связанного с ней префикса.

Версия

Префикс именования

Std

Ограниченный

Bounded_

Неограниченный

Unbounded_

Неопределенный

Indefinite_