Implement MonitorLinkExpression::result so that we can return the score as well as simply a boolean value.
parent
8c33c8ca2a
commit
44862adb8a
|
@ -55,7 +55,7 @@ bool MonitorLinkExpression::evaluate() {
|
|||
Debug(1, "No tree");
|
||||
return false;
|
||||
}
|
||||
MonitorLinkExpression::result result = this->visit(*tree_);
|
||||
MonitorLinkExpression::Result result = this->visit(*tree_);
|
||||
if (!result.success) {
|
||||
Warning("%s", std::string(result.message).c_str());
|
||||
return false;
|
||||
|
@ -63,7 +63,16 @@ bool MonitorLinkExpression::evaluate() {
|
|||
return result.score > 0;
|
||||
}
|
||||
|
||||
MonitorLinkExpression::result
|
||||
const MonitorLinkExpression::Result MonitorLinkExpression::result() {
|
||||
if (!tree_) {
|
||||
Debug(1, "No tree");
|
||||
MonitorLinkExpression::Result result;
|
||||
return result;
|
||||
}
|
||||
return this->visit(*tree_);
|
||||
}
|
||||
|
||||
MonitorLinkExpression::Result
|
||||
MonitorLinkExpression::visit(Node const & node) {
|
||||
Debug(1, "visit: Node: %p Token: %d value %s",
|
||||
&node,
|
||||
|
@ -93,7 +102,7 @@ MonitorLinkExpression::visit(Node const & node) {
|
|||
}
|
||||
}
|
||||
|
||||
MonitorLinkExpression::result
|
||||
MonitorLinkExpression::Result
|
||||
MonitorLinkExpression::visit_logical_and(MonitorLinkExpression::Node const & node)
|
||||
{
|
||||
auto const left { visit(*node.left) };
|
||||
|
@ -110,7 +119,7 @@ MonitorLinkExpression::visit_logical_and(MonitorLinkExpression::Node const & nod
|
|||
};
|
||||
}
|
||||
|
||||
MonitorLinkExpression::result
|
||||
MonitorLinkExpression::Result
|
||||
MonitorLinkExpression::visit_logical_or(MonitorLinkExpression::Node const & node)
|
||||
{
|
||||
auto const left { visit(*node.left) };
|
||||
|
|
|
@ -56,7 +56,7 @@ class MonitorLinkExpression {
|
|||
~Node() noexcept = default;
|
||||
};
|
||||
|
||||
struct result {
|
||||
struct Result {
|
||||
/**
|
||||
* True if evaluation process is successful. Otherwise, false.
|
||||
*/
|
||||
|
@ -85,9 +85,9 @@ class MonitorLinkExpression {
|
|||
return current < std::size( tokens );
|
||||
}
|
||||
|
||||
static result visit(Node const &node);
|
||||
static result visit_logical_and(Node const &node);
|
||||
static result visit_logical_or(Node const &node);
|
||||
static Result visit(Node const &node);
|
||||
static Result visit_logical_and(Node const &node);
|
||||
static Result visit_logical_or(Node const &node);
|
||||
|
||||
public:
|
||||
MonitorLinkExpression();
|
||||
|
@ -95,6 +95,7 @@ class MonitorLinkExpression {
|
|||
};
|
||||
int score() { return score_; }
|
||||
bool evaluate();
|
||||
const Result result();
|
||||
bool parse();
|
||||
private:
|
||||
const std::string_view delimiters_ = "|&(),";
|
||||
|
|
Loading…
Reference in New Issue