Some attributes are defined as associative arrays. An associative array may be regarded as a function that takes a string as a parameter and delivers a string or string list value as its result.
Here are some examples of single associative array attribute associations:
for Body ("main") use "Main.ada"; for Switches ("main.ada") use ("-v", "-gnatv"); for Switches ("main.ada") use Builder'Switches ("main.ada") & "-g";
Like untyped variables and simple attributes, associative array attributes may be declared several times. Each declaration supplies a new value for the attribute, and replaces the previous setting.
An associative array attribute may be declared as a full associative array declaration, with the value of the same attribute in an imported or extended project.
package Builder is for Default_Switches use Default.Builder'Default_Switches; end Builder;
In this example,
Default must be either an project imported by the
current project, or the project that the current project extends. If the
attribute is in a package (in this case, in package
Builder), the same
package needs to be specified.
A full associative array declaration replaces any other declaration for the attribute, including other full associative array declaration. Single associative array associations may be declare after a full associative declaration, modifying the value for a single association of the attribute.