2 #ifndef _MULTIPLY_NODE_CPP_ 3 #define _MULTIPLY_NODE_CPP_ 5 #ifndef _MADARA_NO_KARL_ 44 for (ComponentNodes::iterator i =
nodes_.begin ();
45 i !=
nodes_.end (); ++i, ++j)
47 bool value_changes =
false;
49 value = (*i)->prune (value_changes);
50 if (!value_changes && dynamic_cast <LeafNode *> (*i) == 0)
59 return_value *= value;
61 can_change = can_change || value_changes;
67 "madara::expression::SystemCallLogLevel: " 68 "KARL COMPILE ERROR: " 69 "Multiplication is impossible without at least two values\n");
71 throw KarlException (
"madara::expression::SystemCallLogLevel: " 72 "KARL COMPILE ERROR: " 73 "Multiplication is impossible without at least two values\n");
88 for (ComponentNodes::iterator i =
nodes_.begin ();
89 i !=
nodes_.end (); ++i, ++j)
96 return_value *= value;
107 visitor.
visit (*
this);
110 #endif // _MADARA_NO_KARL_ This class encapsulates an entry in a KnowledgeBase.
virtual madara::knowledge::KnowledgeRecord item(void) const
Returns the printable character of the node.
CompositeMultiplyNode(logger::Logger &logger, const ComponentNodes &nodes)
Constructor.
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)
Evaluates the expression tree.
madara::knowledge::KnowledgeRecord KnowledgeRecord
std::deque< ComponentNode * > ComponentNodes
a vector of Component Nodes
logger::Logger * logger_
handle the context
Defines a node that contains a madara::knowledge::KnowledgeRecord::Integer value. ...
Provides knowledge logging services to files and terminals.
A multi-threaded logger for logging to one or more destinations.
virtual void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
virtual ~CompositeMultiplyNode(void)
Destructor.
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)
Prunes the expression tree of unnecessary nodes.
#define madara_logger_ptr_log(logger, level,...)
Fast version of the madara::logger::log method for Logger pointers.
Abstract base class for all visitors to all classes that derive from ComponentNode.
An exception for unrecoverable KaRL compilation issues.
Settings for applying knowledge updates.
virtual void visit(const LeafNode &node)=0
Visit a LeafNode.
Copyright (c) 2015 Carnegie Mellon University.