18 lines
1 KiB
Text
18 lines
1 KiB
Text
|
This module manages attributes that can be attached to subroutine and
|
||
|
variable declarations. Although it can be used directly, it is mainly
|
||
|
intended to be infrastructure for modules that supply particular attribute
|
||
|
semantics.
|
||
|
|
||
|
Meanings are assigned to attributes by code which is usually supplied by
|
||
|
modules and which runs at compile time. The built-in mechanism for attribute
|
||
|
control is awkward to use, difficult in particular to enable multiple
|
||
|
attributes supplied by different modules, and it scopes attribute meanings
|
||
|
according to the package of the object to which attributes are being
|
||
|
applied. This module is intended to overcome these limitations.
|
||
|
|
||
|
This module supplies a simple pragma to declare an attribute, associating
|
||
|
the attribute's name with a handler function that implements its semantics.
|
||
|
The declaration is lexically scoped, lasting only until the end of the
|
||
|
enclosing block. A declaration can be overridden, giving an attribute name
|
||
|
a different meaning or making it meaningless, in an inner nested block.
|