[#BloombergLP-ball-RuleSet] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::RuleSet :relfileprefix: ../../ :mrdocs: This class manages a set of unique rule values. Rules may be added to or removed from the set; however, rules having duplicate values will not be added. For the definition of two rules having the same value, please refer to the function‐level documentation associated with the `Rule::operator==` function. == Synopsis Declared in `<ball_ruleset.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class RuleSet; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/RuleSet/MaskType.adoc[`MaskType`] | `MaskType` is an alias for the fundamental integral type used to indicate rule subsets compactly. |=== == Enums [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/RuleSet/_04enum.adoc[`Unnamed enum`] | Rule count constants. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/RuleSet/2constructor-017.adoc[`RuleSet`] [.small]#[constructor]# | Constructors | xref:BloombergLP/ball/RuleSet/operator_assign.adoc[`operator=`] | Assign to this object the value of the specified `rhs` object. | xref:BloombergLP/ball/RuleSet/addRule.adoc[`addRule`] | Create a new `Rule` object having the specified `value`. Return the non‐negative id of this non‐modifiable object on success, and a negative value otherwise. A return value of ‐1 indicates that another rule having this value already exists. A return value of ‐2 indicates that the maximum number of rules for this rule set has been reached. | xref:BloombergLP/ball/RuleSet/addRules.adoc[`addRules`] | Add each rule in the specified `rules` to this rule set. Return the number of rules added. Note that a rule in `rules` will be ignored if there is an existing rule having the same value or if the number of rules in the set has reached the upper limit. Also note that if not all valid rules will fit, the (possibly empty) subset of unique values that will be added is implementation dependent. | xref:BloombergLP/ball/RuleSet/getRuleById.adoc[`getRuleById`] | Return the address of the rule having the specified `id` if such a rule exists, and 0 otherwise. The behavior is undefined unless `0 <= id < maxNumRules()`. Note that rules may be assigned non‐sequential identifiers, and that there may be a valid rule whose identifier is greater than `numRules()` (i.e., valid rules may appear anywhere in the range `0 <= id < maxNumRules()`). | xref:BloombergLP/ball/RuleSet/numPredicates.adoc[`numPredicates`] | Return the total number of predicates in all rules maintained by this object. | xref:BloombergLP/ball/RuleSet/numRules.adoc[`numRules`] | Return the number of unique rules maintained in this `RuleSet` object. Note that this value is _not_ the maximum identifier for the rules currently in this container. | xref:BloombergLP/ball/RuleSet/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/RuleSet/removeAllRules.adoc[`removeAllRules`] | Remove every rule in the rule set maintained by this object. | xref:BloombergLP/ball/RuleSet/removeRule.adoc[`removeRule`] | Remove the rule having the specified `value` from this rule set. Return the number of rules removed (i.e., 1 on success and 0 if there is no such a rule). | xref:BloombergLP/ball/RuleSet/removeRuleById.adoc[`removeRuleById`] | Remove from this rule set the rule having the specified `id`. Return the number of rules removed (i.e., 1 on success and 0 if there is no rule whose id is `id`). The behavior is undefined unless `0 <= id < e_MAX_NUM_RULES`. | xref:BloombergLP/ball/RuleSet/removeRules.adoc[`removeRules`] | Remove each rule in the specified `rules` from this rule set. Return the number of rules removed. | xref:BloombergLP/ball/RuleSet/ruleId.adoc[`ruleId`] | Return the id of the rule having the specified `value` if such a rule exists, and a negative value otherwise. Note that if there are multiple rules having `value`, the id of the first one found will be returned and the order in which rules are searched is implementation dependent. | xref:BloombergLP/ball/RuleSet/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration<RuleSet, UsesBslmaAllocator>`] | Declare that this type uses a `bslma` allocator. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/RuleSet/maxNumRules.adoc[`maxNumRules`] | Return the maximum number of rules that can be simultaneously maintained by this object. | xref:BloombergLP/ball/RuleSet/printMask.adoc[`printMask`] | Format the specified `mask` to the specified output `stream` at the optionally specified indentation `level` and return a reference to the modifiable `stream`. If `level` is specified, optionally specify `spacesPerLevel`, the number of spaces per indentation level for this and all of its nested objects. Each line is indented by the absolute value of `level * spacesPerLevel`. If `level` is negative, suppress indentation of the first line. If `spacesPerLevel` is negative, suppress line breaks and format the entire output on one line. If `stream` is initially invalid, this operation has no effect. |=== == Friends [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/ball/operator_lshift-0a5.adoc[BloombergLP::ball::operator<<]` | Write the value of the specified `rules` to the specified `output` stream. Return the specified `output` stream | `xref:BloombergLP/ball/operator_not_eq-016.adoc[BloombergLP::ball::operator!=]` | Return `true` if the specified `lhs` and `rhs` rule sets do not have the same value, and `false` otherwise. Two rule sets do not have the same value if there is at least one rule that exists in one rule but does not exist in the other. | `xref:BloombergLP/ball/operator_eq-0b0.adoc[BloombergLP::ball::operator==]` | Return `true` if the specified `lhs` and `rhs` rule sets have the same value, and `false` otherwise. Two rule sets have the same value if every rule that exists in one rule set also exists in the other. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#