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

Атрибуты


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

Существуют две категории атрибутов: простые атрибуты и ассоциативные массивы.

Используемые имена атрибутов строго ограничены - все имена атрибутов предопределены. Существуют атрибуты проектов и атрибуты пакетов (для каждого пакета). Имена атрибутов не зависят от регистра символов.

Ниже перечислены атрибуты проектов (все они являются простыми атрибутами):

Имя атрибута

Значение



Source_Files   список строк 
 Source_Dirs   список строк 
 Source_List_File   строка
 Object_Dir   строка
 Exec_Dir   строка
 Main   список строк 
 Languages   список строк 
 Library_Dir   строка
 Library_Name   строка
 Library_Kind   строка
 Library_Elaboration   строка
 Library_Version   строка

Ниже перечислены атрибуты пакета Naming:

Имя атрибута

Категория

Индекс

Значение

 Specification_Suffix   ассоциативный массив   имя языка   строка 
 Implementation_Suffix   ассоциативный массив   имя языка   строка 
 Separate_Suffix   простой атрибут   -   строка 
 Casing   простой атрибут   -   строка 
 Dot_Replacement   простой атрибут   -   строка 
 Specification   ассоциативный массив   имя модуля Ады   строка 
 Implementation   ассоциативный массив   имя модуля Ады   строка 
 Specification_Exceptions   ассоциативный массив   имя языка   список строк 
 Implementation_Exceptions   ассоциативный массив   имя языка   список строк 
<


Ниже перечислены атрибуты пакетов Builder, Compiler, Binder, Linker, Cross_Reference и Finder

(см. также "Опции и Файлы проектов")

Имя атрибута

Категория

Индекс

Значение

 Default_Switches   ассоциативный массив   имя языка   список строк 
 Switches   ассоциативный массив   имя файла   список строк 
Дополнительно, пакет Builder обладает однострочными атрибутами Local_Configuration_Pragmas и Global_Configuration_Pragmas; атрибуты пакета Glide не документированы и предназначены для внутреннего использования.

Каждый простой атрибут обладает значением по умолчанию: пустая строка для атрибутов обладающих строковым значением, и пустой список для атрибутов обладающих значением списка строк.

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

Ниже показаны примеры простых описаний атрибутов:

for Object_Dir use "objects"; for Source_Dirs use ("units", "test/drivers");

Любое простое описание атрибута начинается с зарезервированного слова for, после которого следует имя атрибута, сопровождаемое зарезервированным словом use, за которым следует выражение (разновидность выражения зависит от атрибута), и, в завершение, следует символ точки с запятой.

Ссылки (обращения) к атрибутам могут быть использованы в выражениях. Общая форма такого обращения имеет вид:

entity'attribute

Где "entity" является сущностью для которой определен атрибут "attribute". Для атрибутов, которые принадлежат к категории ассоциативных массивов, после имени атрибута необходимо в скобках указать строковый литерал, который используется в качестве индекса. Для наглядности, продемонстрируем несколько примеров:

project'Object_Dir

Naming'Dot_Replacement

Imported_Project'Source_Dirs

Imported_Project.Naming'Casing

Builder'Default_Switches ("Ada")

Сущностью "entity" может являться:



  • project, для какого-либо атрибута текущего проекта
  • имя существующего в текущем проекте пакета
  • имя какого-либо импортируемого проекта
  • имя какого-либо проекта-предка (расширяемого текущим проектом)
  • имя какого-либо импортируемого/проекта-предка, сопровождаемое точкой и, затем, именем пакета

    Например:

    project Prj is

    for Source_Dirs use project'Source_Dirs & "units"; for Source_Dirs use project'Source_Dirs & "test/drivers" end Prj;

    В показанном выше примере, при первом описании атрибута Source_Dirs, его начальным значением является значение по умолчанию, то есть, пустой список строк.

    После первого описания, атрибут Source_Dirs является списком строк, который содержит один элемент ("units"), а после второго описания - два элемента ("units" и "test/drivers").

    Следует заметить, что показанный выше пример приведен только в качестве демонстрации. На приктике, файл проекта, как правило, будет содержать только одно описание атрибута:

    for Source_Dirs use ("units", "test/drivers");


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