Руководство по Ada (Ada 2022)
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;