MADARA  3.2.3
ExpressionTree.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 
3 #ifndef _MADARA_KNOWLEDGE_EXPRESSION_TREE_H_
4 #define _MADARA_KNOWLEDGE_EXPRESSION_TREE_H_
5 
6 #ifndef _MADARA_NO_KARL_
7 
8 #include <string>
9 #include <stdexcept>
11 
15 
16 namespace madara
17 {
18  namespace expression
19  {
20  // Forward declarations.
21  class ExpressionTreeIterator;
22  class ExpressionTreeConstIterator;
23 
29  {
30  public:
31 
32  // Define a "trait"
36 
42  *logger::global_logger.get ());
43 
51  ComponentNode *root, bool increase_count = false);
52 
59 
63  ~ExpressionTree (void);
64 
69  ComponentNode * get_root (void);
70 
75  void operator= (const ExpressionTree &tree);
76 
81  bool is_null (void) const;
82 
88 
89 
95 
104 
109  ExpressionTree left (void);
110 
115  ExpressionTree right (void);
116 
123  iterator begin (const std::string & traversal_order);
124 
131  iterator end (const std::string & traversal_order);
132 
139  const_iterator begin (const std::string & traversal_order) const;
140 
147  const_iterator end (const std::string & traversal_order) const;
148 
153  void accept (Visitor & visitor) const;
154 
155  private:
158 
161  };
162 
163  }
164 }
165 
166 #endif // _MADARA_NO_KARL_
167 
168 #endif /* _MADARA_KNOWLEDGE_EXPRESSION_TREE_H_ */
This class encapsulates an entry in a KnowledgeBase.
madara::knowledge::KnowledgeRecord item(void) const
Returns value of tree.
Encapsulates a MADARA KaRL expression into an evaluatable tree.
ExpressionTree(logger::Logger &logger=*logger::global_logger.get())
Constructor.
bool is_null(void) const
Checks if root pointer is null.
iterator end(const std::string &traversal_order)
Returns an iterator to the end of the expression tree.
Constant iterator over an expression tree.
Definition: Iterator.h:76
void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
Non-const iterator for traversing an expression tree.
Definition: Iterator.h:26
madara::knowledge::KnowledgeRecord value_type
MADARA_EXPORT utility::Refcounter< logger::Logger > global_logger
madara::knowledge::KnowledgeRecord prune(void)
Prunes the expression tree of unnecessary nodes.
Provides knowledge logging services to files and terminals.
Definition: GlobalLogger.h:11
A multi-threaded logger for logging to one or more destinations.
Definition: Logger.h:88
static struct madara::knowledge::tags::string_t string
ExpressionTreeConstIterator const_iterator
ComponentNode * get_root(void)
Returns the root node of the expression tree.
An abstract base class defines a simple abstract implementation of an expression tree node...
Definition: ComponentNode.h:36
Abstract base class for all visitors to all classes that derive from ComponentNode.
Definition: Visitor.h:91
ExpressionTree left(void)
Returns the left expression of this tree.
ExpressionTree right(void)
Returns the right expression of this tree.
logger::Logger * logger_
handle for logging information
ExpressionTreeIterator iterator
Settings for applying knowledge updates.
Copyright (c) 2015 Carnegie Mellon University.
madara::utility::Refcounter< ComponentNode > root_
root of the expression tree
void operator=(const ExpressionTree &tree)
Non-deep copies an expression tree into this instance.
madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings=knowledge::KnowledgeUpdateSettings())
Evaluates the expression tree.
This template class provides transparent reference counting of its template parameter T...
Definition: IteratorImpl.h:17
iterator begin(const std::string &traversal_order)
Returns an iterator to the beginning of the expression tree.