MADARA
3.4.1
SystemCallGetTimeSeconds.cpp
Go to the documentation of this file.
1
2
#ifndef _MADARA_NO_KARL_
3
4
#include <time.h>
5
#include "
madara/expression/LeafNode.h
"
6
#include "
madara/expression/SystemCallGetTimeSeconds.h
"
7
#include "
madara/knowledge/ThreadSafeContext.h
"
8
#include "
madara/expression/Visitor.h
"
9
#include "
madara/utility/Utility.h
"
10
11
madara::expression::SystemCallGetTimeSeconds::SystemCallGetTimeSeconds
(
12
madara::knowledge::ThreadSafeContext
& context,
const
ComponentNodes
& nodes)
13
:
SystemCallNode
(context, nodes)
14
{
15
}
16
17
// Dtor
18
madara::expression::SystemCallGetTimeSeconds::~SystemCallGetTimeSeconds
(
void
) {}
19
20
madara::knowledge::KnowledgeRecord
21
madara::expression::SystemCallGetTimeSeconds::item
(
void
)
const
22
{
23
return
madara::knowledge::KnowledgeRecord
(nodes_.size());
24
}
25
29
madara::knowledge::KnowledgeRecord
30
madara::expression::SystemCallGetTimeSeconds::prune
(
bool
& can_change)
31
{
32
// Time changes. No way to prune this node out.
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::SystemCallGetTimeSeconds::evaluate
(
56
const
madara::knowledge::KnowledgeUpdateSettings
&
/*settings*/
)
57
{
58
madara_logger_ptr_log
(logger_,
logger::LOG_MINOR
,
59
"madara::expression::SystemCallGetTimeSeconds:"
60
"System call get_time_seconds is returning the system clock\n"
);
61
62
return
madara::knowledge::KnowledgeRecord
(time(NULL));
63
}
64
65
// accept a visitor
66
void
madara::expression::SystemCallGetTimeSeconds::accept
(
67
madara::expression::Visitor
& visitor)
const
68
{
69
visitor.
visit
(*
this
);
70
}
71
72
#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
SystemCallGetTimeSeconds.h
ThreadSafeContext.h
Utility.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::SystemCallGetTimeSeconds::SystemCallGetTimeSeconds
SystemCallGetTimeSeconds(madara::knowledge::ThreadSafeContext &context, const ComponentNodes &nodes)
Constructor.
Definition:
SystemCallGetTimeSeconds.cpp:11
madara::expression::SystemCallGetTimeSeconds::evaluate
virtual madara::knowledge::KnowledgeRecord evaluate(const madara::knowledge::KnowledgeUpdateSettings &settings)
Evaluates the expression tree.
Definition:
SystemCallGetTimeSeconds.cpp:55
madara::expression::SystemCallGetTimeSeconds::accept
virtual void accept(Visitor &visitor) const
Accepts a visitor subclassed from the Visitor class.
Definition:
SystemCallGetTimeSeconds.cpp:66
madara::expression::SystemCallGetTimeSeconds::prune
virtual madara::knowledge::KnowledgeRecord prune(bool &can_change)
Prunes the expression tree of unnecessary nodes.
Definition:
SystemCallGetTimeSeconds.cpp:30
madara::expression::SystemCallGetTimeSeconds::~SystemCallGetTimeSeconds
virtual ~SystemCallGetTimeSeconds(void)
Destructor.
Definition:
SystemCallGetTimeSeconds.cpp:18
madara::expression::SystemCallGetTimeSeconds::item
virtual madara::knowledge::KnowledgeRecord item(void) const
Returns the value of the node.
Definition:
SystemCallGetTimeSeconds.cpp:21
madara::expression::SystemCallNode
Interface for a MADARA system call.
Definition:
SystemCallNode.h:25
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::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
SystemCallGetTimeSeconds.cpp
Generated on Sat Jan 20 2024 00:40:26 for MADARA by
1.9.1