A rule to compare two rules. More...
#include <indiCompRules.hpp>
Public Types | |
typedef std::variant< bool, std::string > | boolorerr_t |
In-band error reporting type. More... | |
Public Member Functions | |
ruleCompRule () | |
Default c'tor. More... | |
void | rule1 (indiCompRule *r) |
Set the pointer to the first rule. More... | |
const indiCompRule * | rule1 () |
Get the pointer to the first rule. More... | |
void | rule2 (indiCompRule *r) |
Set the pointer to the second rule. More... | |
const indiCompRule * | rule2 () |
Get the pointer to the first rule. More... | |
virtual boolorerr_t | valid () |
Check if this rule is valid. More... | |
virtual bool | value () |
Get the value of this rule. More... | |
bool | isError (boolorerr_t rv) |
Check if returned value indicates an error. More... | |
void | priority (const rulePriority &p) |
Set priority of this rule. More... | |
const rulePriority & | priority () |
Get the rule priority. More... | |
void | message (const std::string &m) |
Set the message. More... | |
const std::string & | message () |
Get the message. More... | |
void | comparison (const ruleComparison &c) |
Set the comparison for this rule. More... | |
const ruleComparison & | comparison () |
Get the rule comparison. More... | |
boolorerr_t | compTxt (const std::string &str1, const std::string &str2) |
Compare two strings. More... | |
boolorerr_t | compSw (const pcf::IndiElement::SwitchStateType &sw1, const pcf::IndiElement::SwitchStateType &sw2) |
Compare two switches. More... | |
boolorerr_t | compNum (const double &num1, const double &num2, const double &tol) |
Compare two numbers. More... | |
boolorerr_t | compBool (const bool &b1, const bool &b2) |
Compare two booleans. More... | |
Static Public Attributes | |
static constexpr char | name [] = "ruleComp" |
Name of this rule, used by config system. More... | |
Protected Attributes | |
indiCompRule * | m_rule1 {nullptr} |
rule one More... | |
indiCompRule * | m_rule2 {nullptr} |
rule two More... | |
rulePriority | m_priority {rulePriority::none} |
The reporting priority for this rule. More... | |
std::string | m_message |
The message used for notifications. More... | |
ruleComparison | m_comparison {ruleComparison::Eq} |
The comparison for this rule. More... | |
A rule to compare two rules.
Definition at line 1000 of file indiCompRules.hpp.
|
inherited |
In-band error reporting type.
Definition at line 142 of file indiCompRules.hpp.
|
inline |
Default c'tor.
Changes default comparison to And for ruleCompRule
Definition at line 1017 of file indiCompRules.hpp.
|
inlineinherited |
Get the rule comparison.
Definition at line 208 of file indiCompRules.hpp.
Referenced by ruleCompRule().
|
inlineinherited |
Set the comparison for this rule.
[in] | c | the new comparison |
Definition at line 198 of file indiCompRules.hpp.
Referenced by loadRuleConfig().
|
inlineinherited |
Compare two booleans.
[in] | b1 | the first bool to compare |
[in] | b2 | the second bool to compare |
Definition at line 331 of file indiCompRules.hpp.
Referenced by value().
|
inlineinherited |
Compare two numbers.
The comparison is (num1 comp num2), e.g. (num1 < num2). A tolerance is included for floating point equality.
[in] | num1 | the first number to compare |
[in] | num2 | the second number to compare |
[in] | tol | the tolerance for the comparison |
Definition at line 289 of file indiCompRules.hpp.
Referenced by numValRule::value(), and elCompNumRule::value().
|
inlineinherited |
Compare two switches.
Switch comparison can only be Eq or Neq.
[in] | sw1 | the first switch to compare |
[in] | sw2 | the first switch to compare |
Definition at line 260 of file indiCompRules.hpp.
Referenced by swValRule::value(), and elCompSwRule::value().
|
inlineinherited |
Compare two strings.
String comparison can only be Eq or Neq.
[in] | str1 | the first string to compare |
[in] | str2 | the second string to compare |
Definition at line 232 of file indiCompRules.hpp.
Referenced by txtValRule::value(), and elCompTxtRule::value().
|
inlineinherited |
Check if returned value indicates an error.
[in] | rv | the return value to check |
Definition at line 145 of file indiCompRules.hpp.
Referenced by valid(), numValRule::value(), txtValRule::value(), swValRule::value(), elCompNumRule::value(), elCompTxtRule::value(), elCompSwRule::value(), and value().
|
inlineinherited |
|
inlineinherited |
Set the message.
[in] | m | the new message |
Definition at line 183 of file indiCompRules.hpp.
Referenced by loadRuleConfig().
|
inlineinherited |
Get the rule priority.
Definition at line 177 of file indiCompRules.hpp.
|
inlineinherited |
Set priority of this rule.
[in] | p | the new priority |
Definition at line 168 of file indiCompRules.hpp.
Referenced by loadRuleConfig().
|
inline |
Get the pointer to the first rule.
Definition at line 1032 of file indiCompRules.hpp.
|
inline |
Set the pointer to the first rule.
[in] | r | the new pointer to rule1 |
Definition at line 1023 of file indiCompRules.hpp.
Referenced by finalizeRuleValRules().
|
inline |
Get the pointer to the first rule.
Definition at line 1047 of file indiCompRules.hpp.
|
inline |
Set the pointer to the second rule.
[in] | r | the new pointer to rule2 |
Definition at line 1038 of file indiCompRules.hpp.
Referenced by finalizeRuleValRules().
|
inlinevirtual |
Check if this rule is valid.
The rule is valid if the rule pointers are not nullptr, and if each rule is itself valid.
If not valid, the return value is a std::string with the reason. If valid, the return value is a bool set to true.
Implements indiCompRule.
Definition at line 1058 of file indiCompRules.hpp.
Referenced by value().
|
inlinevirtual |
Get the value of this rule.
First checks if the rule is currently valid. The performs the comparison and returns the result.
mx::err::invalidconfig | if the rule is not currently valid |
mx::err::invalidconfig | on an error from the comparison |
Implements indiCompRule.
Definition at line 1098 of file indiCompRules.hpp.
Referenced by audibleAlerts.personality.Operation::__str__(), and audibleAlerts.personality.Transition::compare().
|
protectedinherited |
The comparison for this rule.
Definition at line 159 of file indiCompRules.hpp.
Referenced by indiCompRule::comparison(), indiCompRule::compBool(), indiCompRule::compNum(), indiCompRule::compSw(), and indiCompRule::compTxt().
|
protectedinherited |
The message used for notifications.
Definition at line 156 of file indiCompRules.hpp.
Referenced by indiCompRule::message().
|
protectedinherited |
The reporting priority for this rule.
Definition at line 153 of file indiCompRules.hpp.
Referenced by indiCompRule::priority().
|
protected |
rule one
Definition at line 1009 of file indiCompRules.hpp.
|
protected |
rule two
Definition at line 1010 of file indiCompRules.hpp.
|
staticconstexpr |
Name of this rule, used by config system.
Definition at line 1006 of file indiCompRules.hpp.
Referenced by loadRuleConfig().