MADARA  3.4.1
madara::expression::ComponentNode Class Referenceabstract

An abstract base class defines a simple abstract implementation of an expression tree node. More...

#include <ComponentNode.h>

Inheritance diagram for madara::expression::ComponentNode:
madara::expression::CompositeForLoop madara::expression::CompositeTernaryNode madara::expression::CompositeUnaryNode madara::expression::LeafNode madara::expression::ListNode madara::expression::VariableCompareNode madara::expression::VariableDecrementNode madara::expression::VariableDivideNode madara::expression::VariableIncrementNode madara::expression::VariableMultiplyNode madara::expression::VariableNode

Public Member Functions

 ComponentNode (logger::Logger &logger)
 Constructor. More...
 
virtual ~ComponentNode (void)=0
 Destructor. More...
 
virtual void accept (Visitor &visitor) const
 Accepts a visitor subclassed from the Visitor class. More...
 
virtual madara::knowledge::KnowledgeRecord evaluate (const madara::knowledge::KnowledgeUpdateSettings &settings)=0
 Evaluates the expression tree. More...
 
virtual madara::knowledge::KnowledgeRecord item (void) const
 Returns the value of the node. More...
 
virtual ComponentNodeleft (void) const
 Returns the left expression. More...
 
virtual madara::knowledge::KnowledgeRecord prune (bool &can_change)=0
 Prunes the expression tree of unnecessary nodes. More...
 
virtual ComponentNoderight (void) const
 Returns the right expression. More...
 
void set_logger (logger::Logger &logger)
 Sets the logger for printing errors and debugging info. More...
 

Protected Attributes

logger::Loggerlogger_
 handle the context More...
 

Detailed Description

An abstract base class defines a simple abstract implementation of an expression tree node.

See also
See CompositeUnaryNode, CompositeBinaryNode, and Leaf Node for immediate subclasses of this class.

Definition at line 36 of file ComponentNode.h.

Constructor & Destructor Documentation

◆ ComponentNode()

madara::expression::ComponentNode::ComponentNode ( logger::Logger logger)

Constructor.

Parameters
loggerthe logger to use for printing

Definition at line 14 of file ComponentNode.cpp.

◆ ~ComponentNode()

madara::expression::ComponentNode::~ComponentNode ( void  )
pure virtual

Destructor.

Definition at line 20 of file ComponentNode.cpp.

Member Function Documentation

◆ accept()

void madara::expression::ComponentNode::accept ( Visitor visitor) const
virtual

Accepts a visitor subclassed from the Visitor class.

Parameters
visitorvisitor instance to use

Reimplemented in madara::expression::VariableNode, madara::expression::VariableMultiplyNode, madara::expression::VariableIncrementNode, madara::expression::VariableDivideNode, madara::expression::VariableDecrementNode, madara::expression::VariableCompareNode, madara::expression::SystemCallWriteFile, madara::expression::SystemCallType, madara::expression::SystemCallToString, madara::expression::SystemCallToIntegers, madara::expression::SystemCallToInteger, madara::expression::SystemCallToHostDirs, madara::expression::SystemCallToDoubles, madara::expression::SystemCallToDouble, madara::expression::SystemCallToBuffer, madara::expression::SystemCallTan, madara::expression::SystemCallSqrt, madara::expression::SystemCallSleep, madara::expression::SystemCallSize, madara::expression::SystemCallSin, madara::expression::SystemCallSetScientific, madara::expression::SystemCallSetPrecision, madara::expression::SystemCallSetFixed, madara::expression::SystemCallSetClock, madara::expression::SystemCallReadFile, madara::expression::SystemCallRandInt, madara::expression::SystemCallRandDouble, madara::expression::SystemCallPrintSystemCalls, madara::expression::SystemCallPrint, madara::expression::SystemCallPow, madara::expression::SystemCallNode, madara::expression::SystemCallLogLevel, madara::expression::SystemCallIsinf, madara::expression::SystemCallGetTimeSeconds, madara::expression::SystemCallGetTime, madara::expression::SystemCallGetClock, madara::expression::SystemCallGeneric, madara::expression::SystemCallFragment, madara::expression::SystemCallExpandStatement, madara::expression::SystemCallExpandEnv, madara::expression::SystemCallEval, madara::expression::SystemCallDeleteVariable, madara::expression::SystemCallCos, madara::expression::SystemCallClearVariable, madara::expression::ListNode, madara::expression::LeafNode, madara::expression::CompositeTernaryNode, madara::expression::CompositeSubtractNode, madara::expression::CompositeSquareRootNode, madara::expression::CompositeSequentialNode, madara::expression::CompositeReturnRightNode, madara::expression::CompositePreincrementNode, madara::expression::CompositePredecrementNode, madara::expression::CompositePostincrementNode, madara::expression::CompositePostdecrementNode, madara::expression::CompositeOrNode, madara::expression::CompositeNotNode, madara::expression::CompositeNegateNode, madara::expression::CompositeMultiplyNode, madara::expression::CompositeModulusNode, madara::expression::CompositeLessThanNode, madara::expression::CompositeLessThanEqualNode, madara::expression::CompositeInequalityNode, madara::expression::CompositeImpliesNode, madara::expression::CompositeGreaterThanNode, madara::expression::CompositeGreaterThanEqualNode, madara::expression::CompositeFunctionNode, madara::expression::CompositeForLoop, madara::expression::CompositeEqualityNode, madara::expression::CompositeDivideNode, madara::expression::CompositeConstArray, madara::expression::CompositeBothNode, madara::expression::CompositeAssignmentNode, madara::expression::CompositeArrayReference, madara::expression::CompositeAndNode, and madara::expression::CompositeAddNode.

Definition at line 43 of file ComponentNode.cpp.

◆ evaluate()

virtual madara::knowledge::KnowledgeRecord madara::expression::ComponentNode::evaluate ( const madara::knowledge::KnowledgeUpdateSettings settings)
pure virtual

Evaluates the expression tree.

Parameters
settingssettings for evaluating the node
Returns
value of current contained expression tree

Implemented in madara::expression::SystemCallNode, madara::expression::CompositeTernaryNode, madara::expression::VariableNode, madara::expression::VariableMultiplyNode, madara::expression::VariableIncrementNode, madara::expression::VariableDivideNode, madara::expression::VariableDecrementNode, madara::expression::VariableCompareNode, madara::expression::SystemCallWriteFile, madara::expression::SystemCallType, madara::expression::SystemCallToString, madara::expression::SystemCallToIntegers, madara::expression::SystemCallToInteger, madara::expression::SystemCallToHostDirs, madara::expression::SystemCallToDoubles, madara::expression::SystemCallToDouble, madara::expression::SystemCallToBuffer, madara::expression::SystemCallTan, madara::expression::SystemCallSqrt, madara::expression::SystemCallSleep, madara::expression::SystemCallSize, madara::expression::SystemCallSin, madara::expression::SystemCallSetScientific, madara::expression::SystemCallSetPrecision, madara::expression::SystemCallSetFixed, madara::expression::SystemCallSetClock, madara::expression::SystemCallReadFile, madara::expression::SystemCallRandInt, madara::expression::SystemCallRandDouble, madara::expression::SystemCallPrintSystemCalls, madara::expression::SystemCallPrint, madara::expression::SystemCallPow, madara::expression::SystemCallLogLevel, madara::expression::SystemCallIsinf, madara::expression::SystemCallGetTimeSeconds, madara::expression::SystemCallGetTime, madara::expression::SystemCallGetClock, madara::expression::SystemCallGeneric, madara::expression::SystemCallFragment, madara::expression::SystemCallExpandStatement, madara::expression::SystemCallExpandEnv, madara::expression::SystemCallEval, madara::expression::SystemCallDeleteVariable, madara::expression::SystemCallCos, madara::expression::SystemCallClearVariable, madara::expression::ListNode, madara::expression::LeafNode, madara::expression::CompositeSubtractNode, madara::expression::CompositeSquareRootNode, madara::expression::CompositeSequentialNode, madara::expression::CompositeReturnRightNode, madara::expression::CompositePreincrementNode, madara::expression::CompositePredecrementNode, madara::expression::CompositePostincrementNode, madara::expression::CompositePostdecrementNode, madara::expression::CompositeOrNode, madara::expression::CompositeNotNode, madara::expression::CompositeNegateNode, madara::expression::CompositeMultiplyNode, madara::expression::CompositeModulusNode, madara::expression::CompositeLessThanNode, madara::expression::CompositeLessThanEqualNode, madara::expression::CompositeInequalityNode, madara::expression::CompositeImpliesNode, madara::expression::CompositeGreaterThanNode, madara::expression::CompositeGreaterThanEqualNode, madara::expression::CompositeFunctionNode, madara::expression::CompositeForLoop, madara::expression::CompositeEqualityNode, madara::expression::CompositeDivideNode, madara::expression::CompositeConstArray, madara::expression::CompositeBothNode, madara::expression::CompositeAssignmentNode, madara::expression::CompositeArrayReference, madara::expression::CompositeAndNode, and madara::expression::CompositeAddNode.

◆ item()

madara::knowledge::KnowledgeRecord madara::expression::ComponentNode::item ( void  ) const
virtual

Returns the value of the node.

Returns
value of the node

Reimplemented in madara::expression::VariableNode, madara::expression::VariableMultiplyNode, madara::expression::VariableIncrementNode, madara::expression::VariableDivideNode, madara::expression::VariableDecrementNode, madara::expression::VariableCompareNode, madara::expression::SystemCallWriteFile, madara::expression::SystemCallType, madara::expression::SystemCallToString, madara::expression::SystemCallToIntegers, madara::expression::SystemCallToInteger, madara::expression::SystemCallToHostDirs, madara::expression::SystemCallToDoubles, madara::expression::SystemCallToDouble, madara::expression::SystemCallToBuffer, madara::expression::SystemCallTan, madara::expression::SystemCallSqrt, madara::expression::SystemCallSleep, madara::expression::SystemCallSize, madara::expression::SystemCallSin, madara::expression::SystemCallSetScientific, madara::expression::SystemCallSetPrecision, madara::expression::SystemCallSetFixed, madara::expression::SystemCallSetClock, madara::expression::SystemCallReadFile, madara::expression::SystemCallRandInt, madara::expression::SystemCallRandDouble, madara::expression::SystemCallPrintSystemCalls, madara::expression::SystemCallPrint, madara::expression::SystemCallPow, madara::expression::SystemCallNode, madara::expression::SystemCallLogLevel, madara::expression::SystemCallIsinf, madara::expression::SystemCallGetTimeSeconds, madara::expression::SystemCallGetTime, madara::expression::SystemCallGetClock, madara::expression::SystemCallGeneric, madara::expression::SystemCallFragment, madara::expression::SystemCallExpandStatement, madara::expression::SystemCallExpandEnv, madara::expression::SystemCallEval, madara::expression::SystemCallDeleteVariable, madara::expression::SystemCallCos, madara::expression::SystemCallClearVariable, madara::expression::ListNode, madara::expression::LeafNode, madara::expression::CompositeTernaryNode, madara::expression::CompositeSubtractNode, madara::expression::CompositeSquareRootNode, madara::expression::CompositeSequentialNode, madara::expression::CompositeReturnRightNode, madara::expression::CompositePreincrementNode, madara::expression::CompositePredecrementNode, madara::expression::CompositePostincrementNode, madara::expression::CompositePostdecrementNode, madara::expression::CompositeOrNode, madara::expression::CompositeNotNode, madara::expression::CompositeNegateNode, madara::expression::CompositeMultiplyNode, madara::expression::CompositeModulusNode, madara::expression::CompositeLessThanNode, madara::expression::CompositeLessThanEqualNode, madara::expression::CompositeInequalityNode, madara::expression::CompositeImpliesNode, madara::expression::CompositeGreaterThanNode, madara::expression::CompositeGreaterThanEqualNode, madara::expression::CompositeFunctionNode, madara::expression::CompositeForLoop, madara::expression::CompositeEqualityNode, madara::expression::CompositeDivideNode, madara::expression::CompositeConstArray, madara::expression::CompositeBothNode, madara::expression::CompositeAssignmentNode, madara::expression::CompositeArrayReference, madara::expression::CompositeAndNode, and madara::expression::CompositeAddNode.

Definition at line 22 of file ComponentNode.cpp.

◆ left()

madara::expression::ComponentNode * madara::expression::ComponentNode::left ( void  ) const
virtual

Returns the left expression.

Returns
a pointer to the left expression

Reimplemented in madara::expression::CompositeBinaryNode.

Definition at line 29 of file ComponentNode.cpp.

◆ prune()

virtual madara::knowledge::KnowledgeRecord madara::expression::ComponentNode::prune ( bool &  can_change)
pure virtual

Prunes the expression tree of unnecessary nodes.

Returns
value of current contained expression tree

Implemented in madara::expression::SystemCallNode, madara::expression::CompositeTernaryNode, madara::expression::VariableNode, madara::expression::VariableMultiplyNode, madara::expression::VariableIncrementNode, madara::expression::VariableDivideNode, madara::expression::VariableDecrementNode, madara::expression::VariableCompareNode, madara::expression::SystemCallWriteFile, madara::expression::SystemCallType, madara::expression::SystemCallToString, madara::expression::SystemCallToIntegers, madara::expression::SystemCallToInteger, madara::expression::SystemCallToHostDirs, madara::expression::SystemCallToDoubles, madara::expression::SystemCallToDouble, madara::expression::SystemCallToBuffer, madara::expression::SystemCallTan, madara::expression::SystemCallSqrt, madara::expression::SystemCallSleep, madara::expression::SystemCallSize, madara::expression::SystemCallSin, madara::expression::SystemCallSetScientific, madara::expression::SystemCallSetPrecision, madara::expression::SystemCallSetFixed, madara::expression::SystemCallSetClock, madara::expression::SystemCallReadFile, madara::expression::SystemCallRandInt, madara::expression::SystemCallRandDouble, madara::expression::SystemCallPrintSystemCalls, madara::expression::SystemCallPrint, madara::expression::SystemCallPow, madara::expression::SystemCallLogLevel, madara::expression::SystemCallIsinf, madara::expression::SystemCallGetTimeSeconds, madara::expression::SystemCallGetTime, madara::expression::SystemCallGetClock, madara::expression::SystemCallGeneric, madara::expression::SystemCallFragment, madara::expression::SystemCallExpandStatement, madara::expression::SystemCallExpandEnv, madara::expression::SystemCallEval, madara::expression::SystemCallDeleteVariable, madara::expression::SystemCallCos, madara::expression::SystemCallClearVariable, madara::expression::ListNode, madara::expression::LeafNode, madara::expression::CompositeSubtractNode, madara::expression::CompositeSquareRootNode, madara::expression::CompositeSequentialNode, madara::expression::CompositeReturnRightNode, madara::expression::CompositePreincrementNode, madara::expression::CompositePredecrementNode, madara::expression::CompositePostincrementNode, madara::expression::CompositePostdecrementNode, madara::expression::CompositeOrNode, madara::expression::CompositeNotNode, madara::expression::CompositeNegateNode, madara::expression::CompositeMultiplyNode, madara::expression::CompositeModulusNode, madara::expression::CompositeLessThanNode, madara::expression::CompositeLessThanEqualNode, madara::expression::CompositeInequalityNode, madara::expression::CompositeImpliesNode, madara::expression::CompositeGreaterThanNode, madara::expression::CompositeGreaterThanEqualNode, madara::expression::CompositeFunctionNode, madara::expression::CompositeForLoop, madara::expression::CompositeEqualityNode, madara::expression::CompositeDivideNode, madara::expression::CompositeConstArray, madara::expression::CompositeBothNode, madara::expression::CompositeAssignmentNode, madara::expression::CompositeArrayReference, madara::expression::CompositeAndNode, and madara::expression::CompositeAddNode.

◆ right()

madara::expression::ComponentNode * madara::expression::ComponentNode::right ( void  ) const
virtual

Returns the right expression.

Returns
a pointer to the right expression

Reimplemented in madara::expression::CompositeUnaryNode.

Definition at line 36 of file ComponentNode.cpp.

◆ set_logger()

void madara::expression::ComponentNode::set_logger ( logger::Logger logger)

Sets the logger for printing errors and debugging info.

Parameters
loggerthe logger to use

Definition at line 48 of file ComponentNode.cpp.

Member Data Documentation

◆ logger_

logger::Logger* madara::expression::ComponentNode::logger_
protected

handle the context

Definition at line 96 of file ComponentNode.h.


The documentation for this class was generated from the following files: