Атрибуты
Проект (и его пакеты) может иметь атрибуты, которые описывают свойства проекта. Одни атрибуты имеют значения, которыми являются строки, другие атрибуты имеют значения, которыми являются списки строк.
Существуют две категории атрибутов: простые атрибуты и ассоциативные массивы.
Используемые имена атрибутов строго ограничены - все имена атрибутов предопределены. Существуют атрибуты проектов и атрибуты пакетов (для каждого пакета). Имена атрибутов не зависят от регистра символов.
Ниже перечислены атрибуты проектов (все они являются простыми атрибутами):
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 | ассоциативный массив | имя файла | список строк |
Каждый простой атрибут обладает значением по умолчанию: пустая строка для атрибутов обладающих строковым значением, и пустой список для атрибутов обладающих значением списка строк.
Подобно описаниям переменных, какое-либо описание атрибута определяет новое значение атрибута.
Ниже показаны примеры простых описаний атрибутов:
for Object_Dir use "objects"; for Source_Dirs use ("units", "test/drivers"); |
Ссылки (обращения) к атрибутам могут быть использованы в выражениях. Общая форма такого обращения имеет вид:
entity'attribute |
project'Object_Dir Naming'Dot_Replacement Imported_Project'Source_Dirs Imported_Project.Naming'Casing Builder'Default_Switches ("Ada") |
Например:
project Prj is for Source_Dirs use project'Source_Dirs & "units"; for Source_Dirs use project'Source_Dirs & "test/drivers" end Prj; |
После первого описания, атрибут Source_Dirs является списком строк, который содержит один элемент ("units"), а после второго описания - два элемента ("units" и "test/drivers").
Следует заметить, что показанный выше пример приведен только в качестве демонстрации. На приктике, файл проекта, как правило, будет содержать только одно описание атрибута:
for Source_Dirs use ("units", "test/drivers"); |