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. | |
Public Member Functions | |
| ruleCompRule () | |
| Default c'tor. | |
| virtual ruleComparison | defaultComparison () const |
| Get the default comparison for this rule type. | |
| void | rule1 (indiCompRule *r) |
| Set the pointer to the first rule. | |
| const indiCompRule * | rule1 () |
| Get the pointer to the first rule. | |
| void | rule2 (indiCompRule *r) |
| Set the pointer to the second rule. | |
| const indiCompRule * | rule2 () |
| Get the pointer to the first rule. | |
| virtual boolorerr_t | valid () |
| Check if this rule is valid. | |
| virtual bool | value () |
| Get the value of this rule. | |
| virtual bool | popRuntimeDiagnostic (std::string &diagnostic) |
| Pop one pending runtime diagnostic from either child rule. | |
| bool | isError (boolorerr_t rv) |
| Check if returned value indicates an error. | |
| void | priority (const rulePriority &p, double delay=-1) |
| Set priority of this rule. | |
| const rulePriority & | priority () |
| Get the rule priority. | |
| void | message (const std::string &m) |
| Set the message. | |
| const std::string & | message (bool settime=false) |
| Get the message. | |
| const timespec & | lastMsg () |
| double | sinceLastMsg () |
| Get the time since the last message. | |
| bool | timeToSend () |
| Check if it's time to send a message. | |
| void | messageDelay (double md) |
| Set the message delay. | |
| double | messageDelay () |
| Get the message delay. | |
| void | messageCount (int mc) |
| Set the message count. | |
| int | messageCount () |
| Get the message count. | |
| int | incMessageCount () |
| Increment the message count. | |
| void | comparison (const ruleComparison &c) |
| Set the comparison for this rule. | |
| const ruleComparison & | comparison () |
| Get the rule comparison. | |
| boolorerr_t | compTxt (const std::string &str1, const std::string &str2) |
| Compare two strings. | |
| boolorerr_t | compSw (const pcf::IndiElement::SwitchStateType &sw1, const pcf::IndiElement::SwitchStateType &sw2) |
| Compare two switches. | |
| boolorerr_t | compNum (const double &num1, const double &num2, const double &tol) |
| Compare two numbers. | |
| boolorerr_t | compBool (const bool &b1, const bool &b2) |
| Compare two booleans. | |
Static Public Attributes | |
| static constexpr char | name [] = "ruleComp" |
| Name of this rule, used by config system. | |
| static constexpr double | default_info_msg_delay = 0 |
| static constexpr double | default_caution_msg_delay = 60 |
| static constexpr double | default_warning_msg_delay = 30 |
| static constexpr double | default_alert_msg_delay = 5 |
Protected Attributes | |
| indiCompRule * | m_rule1 { nullptr } |
| rule one | |
| indiCompRule * | m_rule2 { nullptr } |
| rule two | |
| rulePriority | m_priority { rulePriority::none } |
| The reporting priority for this rule. | |
| std::string | m_message |
| The message used for notifications. | |
| timespec | m_lastMsg { 0, 0 } |
| Time the message was last sent. | |
| double | m_messageDelay { 0 } |
| Delay between sending messages. | |
| int | m_messageCount { 0 } |
| Number of times the message has been sent. | |
| ruleComparison | m_comparison { ruleComparison::Eq } |
| The comparison for this rule. | |
A rule to compare two rules.
Definition at line 1723 of file indiCompRules.hpp.
|
inherited |
In-band error reporting type.
Definition at line 187 of file indiCompRules.hpp.
|
inline |
Default c'tor.
Changes default comparison to And for ruleCompRule
Definition at line 1738 of file indiCompRules.hpp.
References indiCompRule::comparison(), and defaultComparison().
|
inlineinherited |
Get the rule comparison.
Definition at line 387 of file indiCompRules.hpp.
References indiCompRule::m_comparison.
Referenced by multiSwitchComboRule::multiSwitchComboRule(), and ruleCompRule().
|
inlineinherited |
Set the comparison for this rule.
| [in] | c | the new comparison |
Definition at line 377 of file indiCompRules.hpp.
References indiCompRule::m_comparison.
Referenced by libXWCTest::stateRuleEngineTest::SCENARIO(), SCENARIO(), SCENARIO(), SCENARIO(), and libXWCTest::stateRuleEngineTest::SCENARIO().
|
inlineinherited |
Compare two booleans.
| [in] | b1 | the first bool to compare |
| [in] | b2 | the second bool to compare |
Definition at line 533 of file indiCompRules.hpp.
References And, Eq, Imply, indiCompRule::m_comparison, Nand, Neq, Nimply, Nor, and Or.
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 483 of file indiCompRules.hpp.
References Eq, Gt, GtEq, Lt, LtEq, indiCompRule::m_comparison, and Neq.
Referenced by numValRule::value(), timeDiffRule::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 452 of file indiCompRules.hpp.
References Eq, indiCompRule::m_comparison, and Neq.
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 422 of file indiCompRules.hpp.
References Eq, indiCompRule::m_comparison, and Neq.
Referenced by txtValRule::value(), elCompTxtRule::value(), and multiSwitchComboRule::value().
|
inlinevirtual |
Get the default comparison for this rule type.
ruleComparison::And Reimplemented from indiCompRule.
Definition at line 1747 of file indiCompRules.hpp.
References And.
Referenced by ruleCompRule().
|
inlineinherited |
Increment the message count.
Definition at line 364 of file indiCompRules.hpp.
References indiCompRule::m_messageCount.
|
inlineinherited |
Check if returned value indicates an error.
| [in] | rv | the return value to check |
Definition at line 190 of file indiCompRules.hpp.
Referenced by loadRuleConfig(), valid(), numValRule::value(), txtValRule::value(), swValRule::value(), timeDiffRule::value(), elCompNumRule::value(), elCompTxtRule::value(), elCompSwRule::value(), multiSwitchComboRule::value(), and value().
|
inlineinherited |
Definition at line 298 of file indiCompRules.hpp.
References indiCompRule::m_lastMsg.
|
inlineinherited |
Get the message.
Optionally sets the message time to now.
| settime | If true m_lastMsg is set to now |
Definition at line 285 of file indiCompRules.hpp.
References indiCompRule::m_lastMsg, and indiCompRule::m_message.
|
inlineinherited |
Set the message.
| [in] | m | the new message |
Definition at line 276 of file indiCompRules.hpp.
References indiCompRule::m_message.
Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().
|
inlineinherited |
Get the message count.
Definition at line 371 of file indiCompRules.hpp.
References indiCompRule::m_messageCount.
|
inlineinherited |
Set the message count.
| [in] | mc | the new message count |
Definition at line 358 of file indiCompRules.hpp.
References indiCompRule::m_messageCount.
Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().
|
inlineinherited |
Get the message delay.
Definition at line 352 of file indiCompRules.hpp.
References indiCompRule::m_messageDelay.
|
inlineinherited |
Set the message delay.
| [in] | md | the new message delay |
Definition at line 346 of file indiCompRules.hpp.
References indiCompRule::m_messageDelay.
|
inlinevirtual |
Pop one pending runtime diagnostic from either child rule.
| [out] | diagnostic | the next pending diagnostic message |
Reimplemented from indiCompRule.
Definition at line 1846 of file indiCompRules.hpp.
References m_rule1, m_rule2, and indiCompRule::popRuntimeDiagnostic().
Referenced by libXWCTest::stateRuleEngineTest::SCENARIO().
|
inlineinherited |
Get the rule priority.
Definition at line 270 of file indiCompRules.hpp.
References indiCompRule::m_priority.
|
inlineinherited |
Set priority of this rule.
Also sets the message delay, to default for priority if not set.
| [in] | p | the new priority |
| [in] | delay | [opt] the message delay, if < 0 the default is used |
Definition at line 234 of file indiCompRules.hpp.
References alert, caution, indiCompRule::default_alert_msg_delay, indiCompRule::default_caution_msg_delay, indiCompRule::default_info_msg_delay, indiCompRule::default_warning_msg_delay, info, indiCompRule::m_messageDelay, indiCompRule::m_priority, and warning.
Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().
|
inline |
Get the pointer to the first rule.
Definition at line 1762 of file indiCompRules.hpp.
References m_rule1.
|
inline |
Set the pointer to the first rule.
| [in] | r | the new pointer to rule1 |
Definition at line 1753 of file indiCompRules.hpp.
References m_rule1.
Referenced by finalizeRuleValRules(), SCENARIO(), SCENARIO(), libXWCTest::stateRuleEngineTest::SCENARIO(), libXWCTest::stateRuleEngineTest::SCENARIO(), and libXWCTest::stateRuleEngineTest::SCENARIO().
|
inline |
Get the pointer to the first rule.
Definition at line 1777 of file indiCompRules.hpp.
References m_rule2.
|
inline |
Set the pointer to the second rule.
| [in] | r | the new pointer to rule2 |
Definition at line 1768 of file indiCompRules.hpp.
References m_rule2.
Referenced by finalizeRuleValRules(), SCENARIO(), SCENARIO(), libXWCTest::stateRuleEngineTest::SCENARIO(), libXWCTest::stateRuleEngineTest::SCENARIO(), and libXWCTest::stateRuleEngineTest::SCENARIO().
|
inlineinherited |
Get the time since the last message.
Definition at line 304 of file indiCompRules.hpp.
References indiCompRule::m_lastMsg.
Referenced by indiCompRule::timeToSend().
|
inlineinherited |
Check if it's time to send a message.
If the message delay is <= 0, this is based on message count (i.e. has it been sent). Otherwise it's based on the time since last sent
Definition at line 319 of file indiCompRules.hpp.
References indiCompRule::m_messageCount, indiCompRule::m_messageDelay, and indiCompRule::sinceLastMsg().
|
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 1788 of file indiCompRules.hpp.
References indiCompRule::isError(), m_rule1, m_rule2, and indiCompRule::valid().
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 1828 of file indiCompRules.hpp.
References indiCompRule::compBool(), indiCompRule::isError(), m_rule1, m_rule2, valid(), and indiCompRule::value().
Referenced by audibleAlerts.personality.Operation::__str__(), audibleAlerts.personality.Transition::compare(), SCENARIO(), SCENARIO(), and libXWCTest::stateRuleEngineTest::SCENARIO().
|
staticconstexprinherited |
Definition at line 198 of file indiCompRules.hpp.
Referenced by indiCompRule::priority().
|
staticconstexprinherited |
Definition at line 196 of file indiCompRules.hpp.
Referenced by indiCompRule::priority().
|
staticconstexprinherited |
Definition at line 195 of file indiCompRules.hpp.
Referenced by indiCompRule::priority().
|
staticconstexprinherited |
Definition at line 197 of file indiCompRules.hpp.
Referenced by indiCompRule::priority().
|
protectedinherited |
The comparison for this rule.
Definition at line 214 of file indiCompRules.hpp.
Referenced by indiCompRule::comparison(), indiCompRule::comparison(), indiCompRule::compBool(), indiCompRule::compNum(), indiCompRule::compSw(), indiCompRule::compTxt(), and multiSwitchComboRule::valid().
|
protectedinherited |
Time the message was last sent.
Definition at line 207 of file indiCompRules.hpp.
Referenced by indiCompRule::lastMsg(), indiCompRule::message(), and indiCompRule::sinceLastMsg().
|
protectedinherited |
The message used for notifications.
Definition at line 205 of file indiCompRules.hpp.
Referenced by indiCompRule::message(), and indiCompRule::message().
|
protectedinherited |
Number of times the message has been sent.
Definition at line 211 of file indiCompRules.hpp.
Referenced by indiCompRule::incMessageCount(), indiCompRule::messageCount(), indiCompRule::messageCount(), and indiCompRule::timeToSend().
|
protectedinherited |
Delay between sending messages.
Definition at line 209 of file indiCompRules.hpp.
Referenced by indiCompRule::messageDelay(), indiCompRule::messageDelay(), indiCompRule::priority(), and indiCompRule::timeToSend().
|
protectedinherited |
The reporting priority for this rule.
Definition at line 202 of file indiCompRules.hpp.
Referenced by indiCompRule::priority(), and indiCompRule::priority().
|
protected |
rule one
Definition at line 1731 of file indiCompRules.hpp.
Referenced by popRuntimeDiagnostic(), rule1(), rule1(), valid(), and value().
|
protected |
rule two
Definition at line 1732 of file indiCompRules.hpp.
Referenced by popRuntimeDiagnostic(), rule2(), rule2(), valid(), and value().
|
staticconstexpr |
Name of this rule, used by config system.
Definition at line 1728 of file indiCompRules.hpp.
Referenced by loadRuleConfig().