Flags

Flags precede the Rule keyword in a rule declaration. Multiple flags can be combined in a rule declaration; the order of the flags is not important. Flags are not keywords.

All flags represent a request for non-default handling of a rule. They are a built-in aspect of the Intent Kernel; there is no way to define a new flag in the Intent Language.

Basic rules support all flags. Some flags are used more frequently than others.

Flag Frequency of use
<none> Common
Parameter Common
Lookup Occasional
Canonical Occasional/rare in user-defined designs. Common in system designs. Used in conjunction with Passive.
Passive Occasional/rare in user-defined designs. Common in system designs. Used in conjunction with Canonical.
Fixed Rare in user-defined designs.
Uncached Rare in user-defined designs.
External New; occasional/rare in user-defined designs.
Shared New; occasional in user-defined designs.

A brief description of flags follows.

Parameter

Indicates that the rule attempts to obtain a value from the parameter list of the Part before any other evaluation. If the value has not been supplied as a parameter, then evaluation of the rule continues.

Lookup

Indicates that the rule should attempt to obtain a value from its parent before using a default value. During evaluation, the run-time system will make a reference (demand for a value) to the same-named rule in the parent. If that reference fails, evaluation of the original rule continues.

Fixed

Indicates that the rule may not be overridden by a dynamic rule. If an attempt is made to add a dynamic rule by the same name, an error will be generated. The Fixed flag is not common in user-defined designs.

Uncached

Indicates a rule whose value is not saved in memory. The rule will be evaluated every time it is referenced by another rule. This is useful if the evaluation of the rule is done for effect instead of (or in addition to) obtaining a value.

Canonical and Passive flags are defined for use with Group Rules. While common in system designs, they are less-frequently employed in user-defined designs.

Canonical

Used in conjunction with Passive flag in Group Rules.

Passive

Used in conjunction with Canonical flag in Group Rules.

External

Causes an UnbindNotifyEvent to be fired when this rule is unbound. Applications can catch these events to clean up externally-managed resources. See External Flag for details.

Shared

Stores the rule value on the Design instead of the Part instance, so all part instances share the rule. Used for rules that do not change from part instance to part instance (like designName, for example), saving memory.