3 #ifndef _COMPOSITE_LESS_THAN_EQUAL_NODE_CPP_ 4 #define _COMPOSITE_LESS_THAN_EQUAL_NODE_CPP_ 6 #ifndef _MADARA_NO_KARL_ 40 bool left_child_can_change =
false;
41 bool right_child_can_change =
false;
47 left_value = this->
left_->
prune (left_child_can_change);
48 if (!left_child_can_change && dynamic_cast <LeafNode *> (
left_) == 0)
57 "madara::expression::CompositeLessThanEqualNode: " 58 "KARL COMPILE ERROR: Less-than-equal-to has no left expression\n");
60 throw KarlException (
"madara::expression::CompositeLessThanEqualNode: " 61 "KARL COMPILE ERROR: " 62 "Node has no right expression\n");
67 right_value = this->
right_->
prune (right_child_can_change);
68 if (!right_child_can_change && dynamic_cast <LeafNode *> (
right_) == 0)
77 "madara::expression::CompositeLessThanEqualNode: " 78 "KARL COMPILE ERROR: Less-than-equal-to has no right expression\n");
80 throw KarlException (
"madara::expression::CompositeLessThanEqualNode: " 81 "KARL COMPILE ERROR: " 82 "Node has no right expression\n");
85 can_change = left_child_can_change || right_child_can_change;
105 visitor.
visit (*
this);
108 #endif // _MADARA_NO_KARL_ This class encapsulates an entry in a KnowledgeBase.
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)=0
Prunes the expression tree of unnecessary nodes.
ComponentNode * right_
Right expression.
madara::knowledge::KnowledgeRecord KnowledgeRecord
virtual madara::knowledge::KnowledgeRecord item(void) const
Returns the printable character of the node.
logger::Logger * logger_
handle the context
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)=0
Evaluates the expression tree.
Defines a left and right node (via inheritance from CompositeUnaryNode).
Defines a node that contains a madara::knowledge::KnowledgeRecord::Integer value. ...
Provides knowledge logging services to files and terminals.
ComponentNode * left_
left expression
A multi-threaded logger for logging to one or more destinations.
void set_value(const KnowledgeRecord &new_value)
Sets the value from another KnowledgeRecord, does not copy clock and write_quality.
#define madara_logger_ptr_log(logger, level,...)
Fast version of the madara::logger::log method for Logger pointers.
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)
Prunes the expression tree of unnecessary nodes.
An abstract base class defines a simple abstract implementation of an expression tree node...
Abstract base class for all visitors to all classes that derive from ComponentNode.
An exception for unrecoverable KaRL compilation issues.
virtual void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
CompositeLessThanEqualNode(logger::Logger &logger, ComponentNode *left, ComponentNode *right)
Constructor.
Settings for applying knowledge updates.
virtual void visit(const LeafNode &node)=0
Visit a LeafNode.
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)
Evaluates the expression tree.
Copyright (c) 2015 Carnegie Mellon University.