API
 
Loading...
Searching...
No Matches
elCompTxtRule Struct Reference

Compare two elements based on their text values. More...

#include <indiCompRules.hpp>

Inheritance diagram for elCompTxtRule:
Inheritance graph
Collaboration diagram for elCompTxtRule:
Collaboration graph

Public Types

typedef std::variant< bool, std::string > boolorerr_t
 In-band error reporting type.
 

Public Member Functions

 elCompTxtRule ()
 Default c'tor.
 
virtual bool value ()
 Get the value of this rule.
 
void property1 (pcf::IndiProperty *property)
 Set the first property pointer.
 
const pcf::IndiProperty * property1 ()
 Get the first property pointer.
 
void element1 (const std::string &el)
 Set the first element name.
 
const std::string & element1 ()
 Get the first element name.
 
void property2 (pcf::IndiProperty *property)
 Set the second property pointer.
 
const pcf::IndiProperty * property2 ()
 Get the second property pointer.
 
void element2 (const std::string &el)
 Set the second element name.
 
const std::string & element2 ()
 Get the second element name.
 
virtual boolorerr_t valid ()
 Check if this rule is valid.
 
bool isError (boolorerr_t rv)
 Check if returned value indicates an error.
 
virtual ruleComparison defaultComparison () const
 Get the default comparison for this rule type.
 
void priority (const rulePriority &p, double delay=-1)
 Set priority of this rule.
 
const rulePrioritypriority ()
 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 ruleComparisoncomparison ()
 Get the rule comparison.
 
virtual bool popRuntimeDiagnostic (std::string &diagnostic)
 Pop one pending runtime diagnostic, if any.
 
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 [] = "elCompTxt"
 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

int m_type
 The property type, from pcf::IndiProperty::Type.
 
pcf::IndiProperty * m_property1 { nullptr }
 Pointer to the first property.
 
std::string m_element1
 The element name within the first property.
 
pcf::IndiProperty * m_property2 { nullptr }
 Pointer to the second property.
 
std::string m_element2
 The element name within the second property.
 
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.
 

Detailed Description

Compare two elements based on their text values.

Definition at line 1222 of file indiCompRules.hpp.

Member Typedef Documentation

◆ boolorerr_t

typedef std::variant<bool, std::string> indiCompRule::boolorerr_t
inherited

In-band error reporting type.

Definition at line 187 of file indiCompRules.hpp.

Constructor & Destructor Documentation

◆ elCompTxtRule()

elCompTxtRule::elCompTxtRule ( )
inline

Default c'tor.

Definition at line 1229 of file indiCompRules.hpp.

Member Function Documentation

◆ comparison() [1/2]

const ruleComparison & indiCompRule::comparison ( )
inlineinherited

Get the rule comparison.

Returns
the current rule comparison

Definition at line 387 of file indiCompRules.hpp.

References indiCompRule::m_comparison.

Referenced by multiSwitchComboRule::multiSwitchComboRule(), and ruleCompRule::ruleCompRule().

◆ comparison() [2/2]

void indiCompRule::comparison ( const ruleComparison c)
inlineinherited

Set the comparison for this rule.

Parameters
[in]cthe 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().

◆ compBool()

boolorerr_t indiCompRule::compBool ( const bool &  b1,
const bool &  b2 
)
inlineinherited

Compare two booleans.

Returns
true if the comparison is true
false if the comparison is false
std::string with error message if the comparison is not valid
Parameters
[in]b1the first bool to compare
[in]b2the 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 ruleCompRule::value().

◆ compNum()

boolorerr_t indiCompRule::compNum ( const double &  num1,
const double &  num2,
const double &  tol 
)
inlineinherited

Compare two numbers.

The comparison is (num1 comp num2), e.g. (num1 < num2). A tolerance is included for floating point equality.

Returns
true if the comparison is true
false if the comparison is false
std::string with error message if the comparison is not valid
Parameters
[in]num1the first number to compare
[in]num2the second number to compare
[in]tolthe 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().

◆ compSw()

boolorerr_t indiCompRule::compSw ( const pcf::IndiElement::SwitchStateType &  sw1,
const pcf::IndiElement::SwitchStateType &  sw2 
)
inlineinherited

Compare two switches.

Switch comparison can only be Eq or Neq.

Returns
true if the comparison is true
false if the comparison is false
std::string with error message if the comparison is not valid
Parameters
[in]sw1the first switch to compare
[in]sw2the 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().

◆ compTxt()

boolorerr_t indiCompRule::compTxt ( const std::string &  str1,
const std::string &  str2 
)
inlineinherited

Compare two strings.

String comparison can only be Eq or Neq.

Returns
true if the comparison is true
false if the comparison is false
std::string with error message if the comparison is not valid
Parameters
[in]str1the first string to compare
[in]str2the second string to compare

Definition at line 422 of file indiCompRules.hpp.

References Eq, indiCompRule::m_comparison, and Neq.

Referenced by txtValRule::value(), value(), and multiSwitchComboRule::value().

◆ defaultComparison()

virtual ruleComparison indiCompRule::defaultComparison ( ) const
inlinevirtualinherited

Get the default comparison for this rule type.

Returns
the comparison that should be used when comp is omitted from configuration

Reimplemented in multiSwitchComboRule, and ruleCompRule.

Definition at line 226 of file indiCompRules.hpp.

References Eq.

◆ element1() [1/2]

const std::string & twoPropRule::element1 ( )
inlineinherited

Get the first element name.

Returns
the current value of m_element1

Definition at line 737 of file indiCompRules.hpp.

References twoPropRule::m_element1.

◆ element1() [2/2]

void twoPropRule::element1 ( const std::string &  el)
inlineinherited

Set the first element name.

Parameters
[in]elthe new element name

Definition at line 728 of file indiCompRules.hpp.

References twoPropRule::m_element1.

Referenced by loadRuleConfig(), libXWCTest::stateRuleEngineTest::SCENARIO(), and SCENARIO().

◆ element2() [1/2]

const std::string & twoPropRule::element2 ( )
inlineinherited

Get the second element name.

Returns
the current value of m_element2

Definition at line 781 of file indiCompRules.hpp.

References twoPropRule::m_element2.

◆ element2() [2/2]

void twoPropRule::element2 ( const std::string &  el)
inlineinherited

Set the second element name.

Parameters
[in]elthe new element name

Definition at line 772 of file indiCompRules.hpp.

References twoPropRule::m_element2.

Referenced by loadRuleConfig(), libXWCTest::stateRuleEngineTest::SCENARIO(), and SCENARIO().

◆ incMessageCount()

int indiCompRule::incMessageCount ( )
inlineinherited

Increment the message count.

Definition at line 364 of file indiCompRules.hpp.

References indiCompRule::m_messageCount.

◆ isError()

bool indiCompRule::isError ( boolorerr_t  rv)
inlineinherited

Check if returned value indicates an error.

Parameters
[in]rvthe return value to check

Definition at line 190 of file indiCompRules.hpp.

Referenced by loadRuleConfig(), ruleCompRule::valid(), numValRule::value(), txtValRule::value(), swValRule::value(), timeDiffRule::value(), elCompNumRule::value(), value(), elCompSwRule::value(), multiSwitchComboRule::value(), and ruleCompRule::value().

◆ lastMsg()

const timespec & indiCompRule::lastMsg ( )
inlineinherited

Definition at line 298 of file indiCompRules.hpp.

References indiCompRule::m_lastMsg.

◆ message() [1/2]

const std::string & indiCompRule::message ( bool  settime = false)
inlineinherited

Get the message.

Optionally sets the message time to now.

Returns
the current message
Parameters
settimeIf true m_lastMsg is set to now

Definition at line 285 of file indiCompRules.hpp.

References indiCompRule::m_lastMsg, and indiCompRule::m_message.

◆ message() [2/2]

void indiCompRule::message ( const std::string &  m)
inlineinherited

Set the message.

Parameters
[in]mthe new message

Definition at line 276 of file indiCompRules.hpp.

References indiCompRule::m_message.

Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().

◆ messageCount() [1/2]

int indiCompRule::messageCount ( )
inlineinherited

Get the message count.

Definition at line 371 of file indiCompRules.hpp.

References indiCompRule::m_messageCount.

◆ messageCount() [2/2]

void indiCompRule::messageCount ( int  mc)
inlineinherited

Set the message count.

Parameters
[in]mcthe new message count

Definition at line 358 of file indiCompRules.hpp.

References indiCompRule::m_messageCount.

Referenced by libXWCTest::stateRuleEngineTest::TEST_CASE().

◆ messageDelay() [1/2]

double indiCompRule::messageDelay ( )
inlineinherited

Get the message delay.

Definition at line 352 of file indiCompRules.hpp.

References indiCompRule::m_messageDelay.

◆ messageDelay() [2/2]

void indiCompRule::messageDelay ( double  md)
inlineinherited

Set the message delay.

Parameters
[in]mdthe new message delay

Definition at line 346 of file indiCompRules.hpp.

References indiCompRule::m_messageDelay.

◆ popRuntimeDiagnostic()

virtual bool indiCompRule::popRuntimeDiagnostic ( std::string &  diagnostic)
inlinevirtualinherited

Pop one pending runtime diagnostic, if any.

Returns
true when a diagnostic string was returned
false when no diagnostic was pending
Parameters
[out]diagnosticthe next pending diagnostic message

Reimplemented in multiSwitchComboRule, and ruleCompRule.

Definition at line 409 of file indiCompRules.hpp.

Referenced by ruleCompRule::popRuntimeDiagnostic().

◆ priority() [1/2]

const rulePriority & indiCompRule::priority ( )
inlineinherited

Get the rule priority.

Returns
the current rule priority

Definition at line 270 of file indiCompRules.hpp.

References indiCompRule::m_priority.

◆ priority() [2/2]

void indiCompRule::priority ( const rulePriority p,
double  delay = -1 
)
inlineinherited

Set priority of this rule.

Also sets the message delay, to default for priority if not set.

Parameters
[in]pthe 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().

◆ property1() [1/2]

const pcf::IndiProperty * twoPropRule::property1 ( )
inlineinherited

Get the first property pointer.

Returns
the current value of m_property1

Definition at line 722 of file indiCompRules.hpp.

References twoPropRule::m_property1.

◆ property1() [2/2]

void twoPropRule::property1 ( pcf::IndiProperty *  property)
inlineinherited

Set the first property pointer.

Exceptions
mx::err::invalidargif property is nullptr
mx::err::invalidconfigif the supplied property has the wrong type
Parameters
[in]propertythe new property pointer

Definition at line 703 of file indiCompRules.hpp.

References twoPropRule::m_property1, and twoPropRule::m_type.

Referenced by loadRuleConfig(), libXWCTest::stateRuleEngineTest::SCENARIO(), and SCENARIO().

◆ property2() [1/2]

const pcf::IndiProperty * twoPropRule::property2 ( )
inlineinherited

Get the second property pointer.

Returns
the current value of m_property2

Definition at line 766 of file indiCompRules.hpp.

References twoPropRule::m_property2.

◆ property2() [2/2]

void twoPropRule::property2 ( pcf::IndiProperty *  property)
inlineinherited

Set the second property pointer.

Exceptions
mx::err::invalidargif property is nullptr
mx::err::invalidconfigif the supplied property has the wrong type
Parameters
[in]propertythe new property pointer

Definition at line 747 of file indiCompRules.hpp.

References twoPropRule::m_property2, and twoPropRule::m_type.

Referenced by loadRuleConfig(), libXWCTest::stateRuleEngineTest::SCENARIO(), and SCENARIO().

◆ sinceLastMsg()

double indiCompRule::sinceLastMsg ( )
inlineinherited

Get the time since the last message.

Definition at line 304 of file indiCompRules.hpp.

References indiCompRule::m_lastMsg.

Referenced by indiCompRule::timeToSend().

◆ timeToSend()

bool 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().

◆ valid()

virtual boolorerr_t twoPropRule::valid ( )
inlinevirtualinherited

Check if this rule is valid.

The rule is valid if both property pointers are not null, and the elements are contained within their respective properties.

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 793 of file indiCompRules.hpp.

References twoPropRule::m_element1, twoPropRule::m_element2, twoPropRule::m_property1, and twoPropRule::m_property2.

Referenced by elCompNumRule::value(), value(), and elCompSwRule::value().

◆ value()

virtual bool elCompTxtRule::value ( )
inlinevirtual

Get the value of this rule.

First checks if the rule is currently valid. The performs the comparison and returns the result.

Returns
the value of the comparison, true or false
Exceptions
mx::err::invalidconfigif the rule is not currently valid
mx::err::invalidconfigon an error from the comparison

Implements indiCompRule.

Definition at line 1242 of file indiCompRules.hpp.

References indiCompRule::compTxt(), indiCompRule::isError(), twoPropRule::m_element1, twoPropRule::m_element2, twoPropRule::m_property1, twoPropRule::m_property2, and twoPropRule::valid().

Referenced by audibleAlerts.personality.Operation::__str__(), audibleAlerts.personality.Transition::compare(), and SCENARIO().

Member Data Documentation

◆ default_alert_msg_delay

constexpr double indiCompRule::default_alert_msg_delay = 5
staticconstexprinherited

Definition at line 198 of file indiCompRules.hpp.

Referenced by indiCompRule::priority().

◆ default_caution_msg_delay

constexpr double indiCompRule::default_caution_msg_delay = 60
staticconstexprinherited

Definition at line 196 of file indiCompRules.hpp.

Referenced by indiCompRule::priority().

◆ default_info_msg_delay

constexpr double indiCompRule::default_info_msg_delay = 0
staticconstexprinherited

Definition at line 195 of file indiCompRules.hpp.

Referenced by indiCompRule::priority().

◆ default_warning_msg_delay

constexpr double indiCompRule::default_warning_msg_delay = 30
staticconstexprinherited

Definition at line 197 of file indiCompRules.hpp.

Referenced by indiCompRule::priority().

◆ m_comparison

◆ m_element1

std::string twoPropRule::m_element1
protectedinherited

The element name within the first property.

Definition at line 683 of file indiCompRules.hpp.

Referenced by twoPropRule::element1(), twoPropRule::element1(), twoPropRule::valid(), elCompNumRule::value(), value(), and elCompSwRule::value().

◆ m_element2

std::string twoPropRule::m_element2
protectedinherited

The element name within the second property.

Definition at line 687 of file indiCompRules.hpp.

Referenced by twoPropRule::element2(), twoPropRule::element2(), twoPropRule::valid(), elCompNumRule::value(), value(), and elCompSwRule::value().

◆ m_lastMsg

timespec indiCompRule::m_lastMsg { 0, 0 }
protectedinherited

Time the message was last sent.

Definition at line 207 of file indiCompRules.hpp.

Referenced by indiCompRule::lastMsg(), indiCompRule::message(), and indiCompRule::sinceLastMsg().

◆ m_message

std::string indiCompRule::m_message
protectedinherited

The message used for notifications.

Definition at line 205 of file indiCompRules.hpp.

Referenced by indiCompRule::message(), and indiCompRule::message().

◆ m_messageCount

int indiCompRule::m_messageCount { 0 }
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().

◆ m_messageDelay

double indiCompRule::m_messageDelay { 0 }
protectedinherited

Delay between sending messages.

Definition at line 209 of file indiCompRules.hpp.

Referenced by indiCompRule::messageDelay(), indiCompRule::messageDelay(), indiCompRule::priority(), and indiCompRule::timeToSend().

◆ m_priority

rulePriority indiCompRule::m_priority { rulePriority::none }
protectedinherited

The reporting priority for this rule.

Definition at line 202 of file indiCompRules.hpp.

Referenced by indiCompRule::priority(), and indiCompRule::priority().

◆ m_property1

pcf::IndiProperty* twoPropRule::m_property1 { nullptr }
protectedinherited

Pointer to the first property.

Definition at line 681 of file indiCompRules.hpp.

Referenced by twoPropRule::property1(), twoPropRule::property1(), twoPropRule::valid(), elCompNumRule::value(), value(), and elCompSwRule::value().

◆ m_property2

pcf::IndiProperty* twoPropRule::m_property2 { nullptr }
protectedinherited

Pointer to the second property.

Definition at line 685 of file indiCompRules.hpp.

Referenced by twoPropRule::property2(), twoPropRule::property2(), twoPropRule::valid(), elCompNumRule::value(), value(), and elCompSwRule::value().

◆ m_type

int twoPropRule::m_type
protectedinherited

The property type, from pcf::IndiProperty::Type.

Definition at line 679 of file indiCompRules.hpp.

Referenced by twoPropRule::property1(), and twoPropRule::property2().

◆ name

constexpr char elCompTxtRule::name[] = "elCompTxt"
staticconstexpr

Name of this rule, used by config system.

Definition at line 1226 of file indiCompRules.hpp.

Referenced by loadRuleConfig().


The documentation for this struct was generated from the following file: