MADARA
3.4.1
SystemCallSetScientific.cpp
Go to the documentation of this file.
1
2
#ifndef _MADARA_NO_KARL_
3
4
#include "
madara/expression/LeafNode.h
"
5
#include "
madara/expression/SystemCallSetScientific.h
"
6
#include "
madara/knowledge/ThreadSafeContext.h
"
7
#include "
madara/expression/Visitor.h
"
8
9
madara::expression::SystemCallSetScientific::SystemCallSetScientific
(
10
madara::knowledge::ThreadSafeContext
& context,
const
ComponentNodes
& nodes)
11
:
SystemCallNode
(context, nodes)
12
{
13
}
14
15
// Dtor
16
madara::expression::SystemCallSetScientific::~SystemCallSetScientific
(
void
) {}
17
18
madara::knowledge::KnowledgeRecord
19
madara::expression::SystemCallSetScientific::item
(
void
)
const
20
{
21
return
madara::knowledge::KnowledgeRecord
(nodes_.size());
22
}
23
27
madara::knowledge::KnowledgeRecord
28
madara::expression::SystemCallSetScientific::prune
(
bool
& can_change)
29
{
30
// user can always change a function, and we have no control over
31
// what it does. Consequently, a function node cannot be pruned out
32
// under any situation
33
can_change =
true
;
34
35
madara::knowledge::KnowledgeRecord
result;
36
37
if
(nodes_.size() > 0)
38
{
39
bool
arg_can_change =
false
;
40
result = nodes_[0]->prune(arg_can_change);
41
42
if
(!arg_can_change &&
dynamic_cast<
LeafNode
*
>
(nodes_[0]) == 0)
43
{
44
delete
nodes_[0];
45
nodes_[0] =
new
LeafNode
(*(this->logger_), result);
46
}
47
}
48
49
return
result;
50
}
51
54
madara::knowledge::KnowledgeRecord
55
madara::expression::SystemCallSetScientific::evaluate
(
56
const
madara::knowledge::KnowledgeUpdateSettings
&
/*settings*/
)
57
{
58
knowledge::KnowledgeRecord
return_value;
59
60
madara_logger_ptr_log
(logger_,
logger::LOG_MINOR
,
61
"madara::expression::SystemCallSetScientific: "
62
"System call set_fixed is setting double output format to "
63
"std::scientific.\n"
);
64
65
knowledge::KnowledgeRecord::set_scientific
();
66
67
return
return_value;
68
}
69
70
// accept a visitor
71
void
madara::expression::SystemCallSetScientific::accept
(
72
madara::expression::Visitor
& visitor)
const
73
{
74
visitor.
visit
(*
this
);
75
}
76
77
#endif
// _MADARA_NO_KARL_
LeafNode.h
madara_logger_ptr_log
#define madara_logger_ptr_log(loggering, level,...)
Fast version of the madara::logger::log method for Logger pointers.
Definition:
Logger.h:41
SystemCallSetScientific.h
ThreadSafeContext.h
KnowledgeRecord
madara::knowledge::KnowledgeRecord KnowledgeRecord
Definition:
VariableCompareNode.cpp:8
Visitor.h
madara::expression::LeafNode
Defines a node that contains a madara::knowledge::KnowledgeRecord::Integer value.
Definition:
LeafNode.h:25
madara::expression::SystemCallNode
Interface for a MADARA system call.
Definition:
SystemCallNode.h:25
madara::expression::SystemCallSetScientific::evaluate
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)
Evaluates the expression tree.
Definition:
SystemCallSetScientific.cpp:55
madara::expression::SystemCallSetScientific::accept
virtual void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
Definition:
SystemCallSetScientific.cpp:71
madara::expression::SystemCallSetScientific::prune
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)
Prunes the expression tree of unnecessary nodes.
Definition:
SystemCallSetScientific.cpp:28
madara::expression::SystemCallSetScientific::~SystemCallSetScientific
virtual ~SystemCallSetScientific(void)
Destructor.
Definition:
SystemCallSetScientific.cpp:16
madara::expression::SystemCallSetScientific::item
virtual madara::knowledge::KnowledgeRecord item(void) const
Returns the value of the node.
Definition:
SystemCallSetScientific.cpp:19
madara::expression::SystemCallSetScientific::SystemCallSetScientific
SystemCallSetScientific(madara::knowledge::ThreadSafeContext &context, const ComponentNodes &nodes)
Constructor.
Definition:
SystemCallSetScientific.cpp:9
madara::expression::Visitor
Abstract base class for all visitors to all classes that derive from ComponentNode.
Definition:
Visitor.h:93
madara::expression::Visitor::visit
virtual void visit(const LeafNode &node)=0
Visit a LeafNode.
madara::knowledge::KnowledgeRecord
This class encapsulates an entry in a KnowledgeBase.
Definition:
KnowledgeRecord.h:88
madara::knowledge::KnowledgeRecord::set_scientific
static void set_scientific(void)
Sets the output format for doubles to std::scientific.
Definition:
KnowledgeRecord.cpp:51
madara::knowledge::KnowledgeUpdateSettings
Settings for applying knowledge updates.
Definition:
KnowledgeUpdateSettings.h:24
madara::knowledge::ThreadSafeContext
This class stores variables and their values for use by any entity needing state information in a thr...
Definition:
ThreadSafeContext.h:76
madara::expression::ComponentNodes
std::deque< ComponentNode * > ComponentNodes
a vector of Component Nodes
Definition:
ComponentNode.h:100
madara::logger::LOG_MINOR
@ LOG_MINOR
Definition:
Logger.h:150
include
madara
expression
SystemCallSetScientific.cpp
Generated on Sat Jan 20 2024 00:40:26 for MADARA by
1.9.1