Справочник по Ada 2012
12.5.5 Типы формальных интерфейсов
Категория, определенная для типа формального интерфейса, — это категория всех типов интерфейсов.
Синтаксис
Правила допустимости
Фактический тип должен быть потомком каждого предка формального типа.
Фактический тип должен быть ограниченным, задачей, защищенным или синхронизированным интерфейсом тогда и только тогда, когда формальный тип также является, соответственно, ограниченным, задачей, защищенным или синхронизированным интерфейсом.
Примеры
type Root_Work_Item is tagged private;
generic
type Managed_Task is task interface;
type Work_Item(<>) is new Root_Work_Item with private;
package Server_Manager is
task type Server is new Managed_Task with
entry Start(Data : in out Work_Item);
end Server;
end Server_Manager;
type Managed_Task is task interface;
type Work_Item(<>) is new Root_Work_Item with private;
package Server_Manager is
task type Server is new Managed_Task with
entry Start(Data : in out Work_Item);
end Server;
end Server_Manager;
Этот обобщенный тип позволяет приложению установить стандартный интерфейс, который должны реализовывать все задачи, чтобы их можно было соответствующим образом управлять при помощи специфичного для приложения планировщика.