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.
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.
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.
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.
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.
Used in conjunction with Passive flag in Group Rules.
Used in conjunction with Canonical flag in Group Rules.
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.
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.