MADARA  3.4.1
madara::expression::ExpressionTree Class Reference

Encapsulates a MADARA KaRL expression into an evaluatable tree. More...

#include <ExpressionTree.h>

Public Types

typedef ExpressionTreeConstIterator const_iterator
 
typedef ExpressionTreeIterator iterator
 
typedef madara::knowledge::KnowledgeRecord value_type
 

Public Member Functions

 ExpressionTree (const ExpressionTree &tree)
 Copy constructor. More...
 
 ExpressionTree (logger::Logger &logger, ComponentNode *root, bool increase_count=false)
 Constructor for copying a root node. More...
 
 ExpressionTree (logger::Logger &logger, const ExpressionTree &tree)
 Constructor for copying an expression tree. More...
 
 ExpressionTree (logger::Logger &logger= *logger::global_logger.get())
 Constructor. More...
 
 ~ExpressionTree (void)
 Destructor. More...
 
void accept (Visitor &visitor) const
 Accepts a visitor subclassed from the Visitor class. More...
 
iterator begin (const std::string &traversal_order)
 Returns an iterator to the beginning of the expression tree. More...
 
const_iterator begin (const std::string &traversal_order) const
 Returns a const iterator to the beginning of the expression tree. More...
 
iterator end (const std::string &traversal_order)
 Returns an iterator to the end of the expression tree. More...
 
const_iterator end (const std::string &traversal_order) const
 Returns a const iterator to the end of the expression tree. More...
 
madara::knowledge::KnowledgeRecord evaluate (const madara::knowledge::KnowledgeUpdateSettings &settings=knowledge::KnowledgeUpdateSettings())
 Evaluates the expression tree. More...
 
ComponentNodeget_root (void)
 Returns the root node of the expression tree. More...
 
bool is_null (void) const
 Checks if root pointer is null. More...
 
madara::knowledge::KnowledgeRecord item (void) const
 Returns value of tree. More...
 
ExpressionTree left (void)
 Returns the left expression of this tree. More...
 
void operator= (const ExpressionTree &tree)
 Non-deep copies an expression tree into this instance. More...
 
madara::knowledge::KnowledgeRecord prune (void)
 Prunes the expression tree of unnecessary nodes. More...
 
ExpressionTree right (void)
 Returns the right expression of this tree. More...
 

Private Attributes

logger::Loggerlogger_
 handle for logging information More...
 
madara::utility::Refcounter< ComponentNoderoot_
 root of the expression tree More...
 

Detailed Description

Encapsulates a MADARA KaRL expression into an evaluatable tree.

Definition at line 28 of file ExpressionTree.h.

Member Typedef Documentation

◆ const_iterator

◆ iterator

◆ value_type

Constructor & Destructor Documentation

◆ ExpressionTree() [1/4]

madara::expression::ExpressionTree::ExpressionTree ( logger::Logger logger = *logger::global_logger.get())

Constructor.

Parameters
loggerlogger for printing information

Definition at line 153 of file ExpressionTree.cpp.

◆ ExpressionTree() [2/4]

madara::expression::ExpressionTree::ExpressionTree ( logger::Logger logger,
ComponentNode root,
bool  increase_count = false 
)

Constructor for copying a root node.

Parameters
loggerlogger for printing information
rootroot of the tree to copy
increase_countwhether or not to increase the ref count

Definition at line 160 of file ExpressionTree.cpp.

◆ ExpressionTree() [3/4]

madara::expression::ExpressionTree::ExpressionTree ( logger::Logger logger,
const ExpressionTree tree 
)

Constructor for copying an expression tree.

Parameters
loggerlogger for printing information
treeexpression tree to copy

Definition at line 168 of file ExpressionTree.cpp.

◆ ExpressionTree() [4/4]

madara::expression::ExpressionTree::ExpressionTree ( const ExpressionTree tree)

Copy constructor.

Parameters
treeexpression tree to copy

Definition at line 176 of file ExpressionTree.cpp.

◆ ~ExpressionTree()

madara::expression::ExpressionTree::~ExpressionTree ( void  )

Destructor.

Definition at line 198 of file ExpressionTree.cpp.

Member Function Documentation

◆ accept()

void madara::expression::ExpressionTree::accept ( Visitor visitor) const

Accepts a visitor subclassed from the Visitor class.

Accept a visitor to perform some action on the ExpressionTree.

Parameters
visitorvisitor instance to use

Definition at line 317 of file ExpressionTree.cpp.

◆ begin() [1/2]

madara::expression::ExpressionTree::iterator madara::expression::ExpressionTree::begin ( const std::string &  traversal_order)

Returns an iterator to the beginning of the expression tree.

Parameters
traversal_orderin-order, post-order, pre-order, level-order
Returns
iterator for the specified order

Definition at line 276 of file ExpressionTree.cpp.

◆ begin() [2/2]

madara::expression::ExpressionTreeConstIterator madara::expression::ExpressionTree::begin ( const std::string &  traversal_order) const

Returns a const iterator to the beginning of the expression tree.

Parameters
traversal_orderin-order, post-order, pre-order, level-order
Returns
iterator for the specified order

Definition at line 294 of file ExpressionTree.cpp.

◆ end() [1/2]

madara::expression::ExpressionTree::iterator madara::expression::ExpressionTree::end ( const std::string &  traversal_order)

Returns an iterator to the end of the expression tree.

Parameters
traversal_orderin-order, post-order, pre-order, level-order
Returns
iterator for the specified order

Definition at line 285 of file ExpressionTree.cpp.

◆ end() [2/2]

madara::expression::ExpressionTreeConstIterator madara::expression::ExpressionTree::end ( const std::string &  traversal_order) const

Returns a const iterator to the end of the expression tree.

Parameters
traversal_orderin-order, post-order, pre-order, level-order
Returns
iterator for the specified order

Definition at line 306 of file ExpressionTree.cpp.

◆ evaluate()

madara::knowledge::KnowledgeRecord madara::expression::ExpressionTree::evaluate ( const madara::knowledge::KnowledgeUpdateSettings settings = knowledge::KnowledgeUpdateSettings())

Evaluates the expression tree.

Evaluates the node and its children.

Parameters
settingsSettings for evaluating and setting knowledge
Returns
value of expression tree

This does not prune any of the expression tree, and is much faster than the prune function

Definition at line 233 of file ExpressionTree.cpp.

◆ get_root()

madara::expression::ComponentNode * madara::expression::ExpressionTree::get_root ( void  )

Returns the root node of the expression tree.

Returns
root node of the expression tree

Definition at line 243 of file ExpressionTree.cpp.

◆ is_null()

bool madara::expression::ExpressionTree::is_null ( void  ) const

Checks if root pointer is null.

Returns
true if root of tree is null

Definition at line 205 of file ExpressionTree.cpp.

◆ item()

madara::knowledge::KnowledgeRecord madara::expression::ExpressionTree::item ( void  ) const

Returns value of tree.

Returns
value of the expression tree

Definition at line 251 of file ExpressionTree.cpp.

◆ left()

madara::expression::ExpressionTree madara::expression::ExpressionTree::left ( void  )

Returns the left expression of this tree.

Returns
left expression

Definition at line 259 of file ExpressionTree.cpp.

◆ operator=()

void madara::expression::ExpressionTree::operator= ( const ExpressionTree tree)

Non-deep copies an expression tree into this instance.

Parameters
treetree to copy from

Definition at line 184 of file ExpressionTree.cpp.

◆ prune()

madara::knowledge::KnowledgeRecord madara::expression::ExpressionTree::prune ( void  )

Prunes the expression tree of unnecessary nodes.

Prune the tree of unnecessary nodes.

Returns
value of expression tree

Returns evaluation of the node and sets can_change appropriately. if this node can be changed, that means it shouldn't be pruned.

Definition at line 213 of file ExpressionTree.cpp.

◆ right()

madara::expression::ExpressionTree madara::expression::ExpressionTree::right ( void  )

Returns the right expression of this tree.

Returns
right expression

Definition at line 267 of file ExpressionTree.cpp.

Member Data Documentation

◆ logger_

logger::Logger* madara::expression::ExpressionTree::logger_
private

handle for logging information

Definition at line 160 of file ExpressionTree.h.

◆ root_

madara::utility::Refcounter<ComponentNode> madara::expression::ExpressionTree::root_
private

root of the expression tree

Definition at line 163 of file ExpressionTree.h.


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