Ада-95. Компилятор GNAT

       

Тэговый тип как параметр настройки


Поскольку стандарт Ada95 различает два вида типов: тэговые и не тэговые, - то бывают случаи когда при работе с настраиваемыми модулями их необходимо различать.

Подобная необходимость более точного указания свойств ожидаемого формального параметра настройки (формальный тип тэговый или нет) может возникнуть при желании более строгого определения контрактной модели настраиваемых модулей.

Указание тэгового типа как формального параметра настройки может иметь следующий вид:

generic

type T is tagged private; package Module_G is ...

В случае использования тэговых типов как формальных параметров настройки особый интерес представляют конструкции для расширения типа и для надклассового программирования.

Конструкция для расширения типа позволяет добавлять новые компоненты, и является основой для множественного наследования.

Конструкции для надклассового программирования позволяют предоставить подпрограммы, которые применимы к T'Class, или описать типы надклассовых ссылок (подобные описания будут точно адаптированы для любого типа в указанном классе наследования при конкретизации).

generic
type T is tagged private; package Module_G is

type NT is new T -- расширение типа with record

B : Boolean; end record;

function Equals (Left, Right : T'Class) -- надклассовая подпрограмма return Boolean;

type T_Poly_Ref is -- тип надклассовой ссылки access T'Class; end Module_G;



Содержание раздела