MADARA  3.1.8
LeafNode.cpp
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef _LEAF_NODE_CPP_
3 #define _LEAF_NODE_CPP_
4 
5 #ifndef _MADARA_NO_KARL_
6 
7 #include <iostream>
8 
12 
13 
14 
15 // Ctor
18 : ComponentNode (logger), item_ (item)
19 {
20 }
21 
22 // Ctor
25 : ComponentNode (logger)
26 {
27  item_.set_value (item);
28 }
29 
30 // Ctor
33 : ComponentNode (logger)
34 {
35  item_.set_value (item);
36 }
37 
38 // Ctor
40  logger::Logger & logger, double item)
41 : ComponentNode (logger)
42 {
43  item_.set_value (item);
44 }
45 
46 // Dtor
48 {
49 }
50 
51 // return the item
54 {
55  return item_;
56 }
57 
58 
64 {
65  can_change = false;
66 
67  // we could call item(), but since it is virtual, it incurs unnecessary
68  // overhead.
69  return item_;
70 }
71 
76  const madara::knowledge::KnowledgeUpdateSettings & /*settings*/)
77 {
78  // we could call item(), but since it is virtual, it incurs unnecessary
79  // overhead.
80  return item_;
81 }
82 
83 
84 void
86 {
87  visitor.visit (*this);
88 }
89 
90 #endif // _MADARA_NO_KARL_
91 
92 #endif /* _LEAF_NODE_CPP_ */
This class encapsulates an entry in a KnowledgeBase.
Provides knowledge logging services to files and terminals.
Definition: GlobalLogger.h:11
madara::knowledge::KnowledgeRecord item_
Integer value associated with the operand.
Definition: LeafNode.h:91
A multi-threaded logger for logging to one or more destinations.
Definition: Logger.h:88
void set_value(const KnowledgeRecord &new_value)
Sets the value from another KnowledgeRecord, does not copy clock and write_quality.
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)
Prunes the expression tree of unnecessary nodes.
Definition: LeafNode.cpp:63
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)
Evaluates the expression tree.
Definition: LeafNode.cpp:75
virtual ~LeafNode(void)
Destructor.
Definition: LeafNode.cpp:47
An abstract base class defines a simple abstract implementation of an expression tree node...
Definition: ComponentNode.h:35
Abstract base class for all visitors to all classes that derive from ComponentNode.
Definition: Visitor.h:90
LeafNode(logger::Logger &logger, const knowledge::KnowledgeRecord &item)
Constructor.
Definition: LeafNode.cpp:16
static constexpr struct madara::knowledge::tags::string_t string
virtual madara::knowledge::KnowledgeRecord item(void) const
Returns the printable value of the node.
Definition: LeafNode.cpp:53
Settings for applying knowledge updates.
virtual void visit(const LeafNode &node)=0
Visit a LeafNode.
virtual void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
Definition: LeafNode.cpp:85