[#BloombergLP-ball-Rule] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::Rule :relfileprefix: ../../ :mrdocs: This class defines a value‐semantic object that holds a pattern, four threshold levels, and an attribute set. For each of these fields there is an accessor for obtaining the field value and a manipulator for changing that value. There are a few methods as well for directly adding/removing/searching attributes. == Synopsis Declared in `<ball_rule.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class Rule; ---- == Description Additionally, this class supports a complete set of _value_ _semantic_ operations, including copy construction, assignment and equality comparison, and `ostream` printing. A precise operational definition of when two instances have the same value can be found in the description of `operator==` for the class. This class is _exception_ _neutral_ with no guarantee of rollback: If an exception is thrown during the invocation of a method on a pre‐existing instance, the object is left in a valid state, but its value is undefined. In no event is memory leaked. Finally, _aliasing_ (e.g., using all or part of an object as both source and destination) is supported in all cases. == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/Rule/2constructor-0e36.adoc[`Rule`] [.small]#[constructor]# | Constructors | xref:BloombergLP/ball/Rule/operator_assign.adoc[`operator=`] | Assign to this object the value of the specified `rhs` object. | xref:BloombergLP/ball/Rule/addAttribute.adoc[`addAttribute`] | Add an attribute having the specified `value` to this object. Return 1 on success and 0 if an attribute having the same value already exists in this object. | xref:BloombergLP/ball/Rule/addPredicate.adoc[`addPredicate`] | DEPRECATED: Use `addAttribute` instead. | xref:BloombergLP/ball/Rule/begin.adoc[`begin`] | Return an iterator referring to the first member of the attribute set maintained by this object. | xref:BloombergLP/ball/Rule/end.adoc[`end`] | Return an iterator referring to one past the last member of the attribute set maintained by this object. | xref:BloombergLP/ball/Rule/evaluate.adoc[`evaluate`] | Return `true` if for every attribute maintained by this object, an attribute with the same name and value exists in the specified `containerList`; and `false` otherwise. | xref:BloombergLP/ball/Rule/hasAttribute.adoc[`hasAttribute`] | Return `true` if an attribute having specified `value` exists in this object, and `false` otherwise. | xref:BloombergLP/ball/Rule/hasPredicate.adoc[`hasPredicate`] | DEPRECATED: Use `hasAttribute` instead. | xref:BloombergLP/ball/Rule/isMatch.adoc[`isMatch`] | Return `true` if the specified `inputString` matches the pattern of this rule, and `false` otherwise. (For the definition of a string matching the pattern of a rule, please refer to the function‐level documentation associated with the `PatternUtil::isMatch` function). | xref:BloombergLP/ball/Rule/numAttributes.adoc[`numAttributes`] | Return the number of attributes managed by this object. | xref:BloombergLP/ball/Rule/numPredicates.adoc[`numPredicates`] | DEPRECATED: Use `numAttributes` instead. | xref:BloombergLP/ball/Rule/passLevel.adoc[`passLevel`] | Return the pass level of this object. | xref:BloombergLP/ball/Rule/pattern.adoc[`pattern`] | Return the pattern of this object. | xref:BloombergLP/ball/Rule/print.adoc[`print`] | Format this object to the specified output `stream` at the (absolute value of) the optionally specified indentation `level` and return a reference to `stream`. If `level` is specified, optionally specify `spacesPerLevel`, the number of spaces per indentation level for this and all of its nested objects. If `level` is negative, suppress indentation of the first line. If `spacesPerLevel` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`). If `stream` is not valid on entry, this operation has no effect. | xref:BloombergLP/ball/Rule/recordLevel.adoc[`recordLevel`] | Return the record level of this object. | xref:BloombergLP/ball/Rule/removeAll.adoc[`removeAll`] | Remove all attributes from this rule. | xref:BloombergLP/ball/Rule/removeAllPredicates.adoc[`removeAllPredicates`] | DEPRECATED: Use `removeAll` instead. | xref:BloombergLP/ball/Rule/removeAttribute.adoc[`removeAttribute`] | Remove the attribute having the specified `value` from this object. Return the number of attributes being removed (i.e., 1 on success and 0 if no attribute having `value` exists in this object). | xref:BloombergLP/ball/Rule/removePredicate.adoc[`removePredicate`] | DEPRECATED: Use `removeAttribute` instead. | xref:BloombergLP/ball/Rule/setLevels.adoc[`setLevels`] | Set the threshold levels of this object to the specified `recordLevel`, `passLevel`, `triggerLevel`, and `triggerAllLevel` values, respectively, if each of the specified values is in the range [0 .. 255]. Return 0 on success, and a non‐zero value otherwise (with no effect on the threshold levels of this object). | xref:BloombergLP/ball/Rule/setPattern.adoc[`setPattern`] | Set the pattern of this object to the specified `value`. | xref:BloombergLP/ball/Rule/triggerAllLevel.adoc[`triggerAllLevel`] | Return the trigger‐all level of this object. | xref:BloombergLP/ball/Rule/triggerLevel.adoc[`triggerLevel`] | Return the trigger level of this object. | xref:BloombergLP/ball/Rule/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration<Rule, UsesBslmaAllocator>`] | Declare that this type uses a `bslma` allocator. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/Rule/hash.adoc[`hash`] | Return a hash value calculated from the specified `rule` using the specified `size` as the number of slots. The value returned is guaranteed to be in the range `[0 .. size ‐ 1]`. The behavior is undefined unless `0 < size`. |=== == Friends [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/ball/operator_lshift-0cf3.adoc[BloombergLP::ball::operator<<]` | Write the value of the specified `rule` to the specified `output` stream. Return the specified `output` stream. | `xref:BloombergLP/ball/operator_not_eq-0ac.adoc[BloombergLP::ball::operator!=]` | Return `true` if the specified `lhs` and `rhs` objects do not have the same value, and `false` otherwise. Two `Rule` objects do not have the same value if they have different attributes, different values for any of the four respective threshold levels, or different patterns. | `xref:BloombergLP/ball/operator_eq-0a.adoc[BloombergLP::ball::operator==]` | Return `true` if the specified `lhs` and `rhs` objects have the same value, and `false` otherwise. Two `Rule` objects have the same value if they have the same attributes, the same four respective threshold levels, and the same pattern. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#