SyDEVS  v0.6.5 Multiscale Simulation and Systems Modeling Library
statistic_node.h
Go to the documentation of this file.
1 #pragma once
2 #ifndef SYDEVS_SYSTEMS_STATISTIC_NODE_H_
3 #define SYDEVS_SYSTEMS_STATISTIC_NODE_H_
4
6
7 namespace sydevs {
8 namespace systems {
9
10
19 template<typename T>
21 {
22 public:
35  statistic_node(const std::string& node_name, const node_context& external_context);
36
38
39  const T& value() const;
40
41 private:
42  pointer val_;
43
44  virtual void flow_event();
45 };
46
47
48 template<typename T>
49 inline statistic_node<T>::statistic_node(const std::string& node_name, const node_context& external_context)
50  : function_node(node_name, external_context)
51  , statistic("statistic", external_interface())
52  , val_()
53 {
54 }
55
56
57 template<typename T>
58 inline const T& statistic_node<T>::value() const
59 {
60  return val_.dereference<T>();
61 }
62
63
64 template<typename T>
66 {
67  val_ = qualified_type<T>::copy(statistic.value());
68 }
69
70
71 } // namespace
72 } // namespace
73
74 #endif
const std::string & node_name() const
Returns the name of the node.
Definition: system_node.h:135
port< flow, input, T > statistic
The flow input port on which the statistic value is obtained.
Definition: statistic_node.h:37
A class template for nodes which accept statistic values.
Definition: statistic_node.h:20
static pointer copy(const T &X)
If T is a qualified type, returns a deep copy of X.
Definition: qualified_type.h:174
Definition: node_context.h:16
A base class for indivisible nodes in which function behavior is procedurally encoded.
Definition: function_node.h:21
statistic_node(const std::string &node_name, const node_context &external_context)
Constructs a statistic_node.
Definition: statistic_node.h:49
const T & value() const
Returns the statistic value.
Definition: statistic_node.h:58
A class template for flow input ports.
Definition: port.h:68
A data type which represents a pointer to anything.
Definition: pointer.h:27