Empirical
DataInterface.h
Go to the documentation of this file.
1 
11 #ifndef EMP_DATA_INTERFACE_H
12 #define EMP_DATA_INTERFACE_H
13 
14 #include "DataNode.h"
15 
16 namespace emp {
17 
19  class DataInterface {
20  private:
21  public:
22  virtual ~DataInterface() { ; }
23 
24  virtual size_t GetCount() const = 0;
25  virtual size_t GetResetCount() const = 0;
26 
27  virtual double GetTotal() const = 0;
28  virtual double GetMean() const = 0;
29  virtual double GetMin() const = 0;
30  virtual double GetMax() const = 0;
31 
32  virtual double GetVariance() const = 0;
33  virtual double GetStandardDeviation() const = 0;
34  virtual double GetSkew() const = 0;
35  virtual double GetKurtosis() const = 0;
36 
37  virtual void PullData() = 0;
38  virtual void Reset() = 0;
39  virtual void PrintDebug(std::ostream & os=std::cout) = 0;
40 
41  virtual void GetName() = 0;
42  virtual void GetDescription() = 0;
43  virtual void GetKeyword() = 0;
44 
45  };
46 
47  template <typename VAL_TYPE, emp::data... EXTRA>
49  public:
50  using node_t = DataNode<VAL_TYPE, EXTRA...>;
51 
52  private:
53  node_t * node;
54  bool owner;
55 
56  public:
57  DataInterface_Impl() : node(new node_t), owner(true) { ; }
58  DataInterface_Impl(node_t * n) : node(n), owner(false) { ; }
59  DataInterface_Impl(const DataInterface_Impl &) = delete;
61  ~DataInterface_Impl() { if (owner) delete node; }
62 
63  DataInterface_Impl & operator=(const DataInterface_Impl &) = delete;
64  DataInterface_Impl & operator=(DataInterface_Impl &&) = delete;
65 
67  size_t GetCount() const { return node->GetCount(); }
68 
70  size_t GetResetCount() const { return node->GetResetCount(); }
71 
74  double GetTotal() const { return node->GetTotal(); }
75 
78  double GetMean() const { return node->GetMean(); }
79 
82  double GetMin() const { return node->GetMin(); }
83 
86  double GetMax() const { return node->GetMax(); }
87 
90  double GetVariance() const { return node->GetVariance(); }
91 
94  double GetStandardDeviation() const { return node->GetStandardDeviation(); }
95 
98  double GetSkew() const { return node->GetSkew(); }
99 
102  double GetKurtosis() const { return node->GetKurtosis(); }
103 
107  void PullData() { node->PullData(); }
108 
111  void Reset() { node->Reset(); }
112 
115  void PrintDebug(std::ostream & os=std::cout) { node->PrintDebug(os); }
116 
119  void GetName() { node->GetName(); }
120 
123  void GetDescription() { node->GetDescription(); }
124 
127  void GetKeyword() { node->GetKeyword(); }
128 
129  };
130 
131 
132  template <typename VAL_TYPE, emp::data... EXTRA>
134  return new DataInterface_Impl<VAL_TYPE, EXTRA...>();
135  }
136 
137 }
138 
139 #endif
double GetMin() const
Definition: DataInterface.h:82
DataInterface_Impl(node_t *n)
Definition: DataInterface.h:58
virtual double GetVariance() const =0
double GetVariance() const
Definition: DataInterface.h:90
DataNode objects track a specific type of data over the course of a run.
virtual void PullData()=0
double GetSkew() const
Definition: DataInterface.h:98
double GetTotal() const
Definition: DataInterface.h:74
virtual void PrintDebug(std::ostream &os=std::cout)=0
DataInterface * MakeDataInterface()
Definition: DataInterface.h:133
virtual double GetMin() const =0
size_t GetCount() const
Returns the number values added to this node since the last reset.
Definition: DataInterface.h:67
virtual ~DataInterface()
Definition: DataInterface.h:22
virtual size_t GetCount() const =0
virtual size_t GetResetCount() const =0
size_t GetResetCount() const
Returns the number of times this node has been reset.
Definition: DataInterface.h:70
data
A set of modifiers are available do describe DataNode.
Definition: DataNode.h:38
Definition: DataNode.h:648
Definition: DataInterface.h:48
virtual double GetTotal() const =0
double GetMean() const
Definition: DataInterface.h:78
~DataInterface_Impl()
Definition: DataInterface.h:61
void GetKeyword()
Definition: DataInterface.h:127
double GetMax() const
Definition: DataInterface.h:86
void PrintDebug(std::ostream &os=std::cout)
Definition: DataInterface.h:115
double GetStandardDeviation() const
Definition: DataInterface.h:94
virtual double GetKurtosis() const =0
DataInterface_Impl()
Definition: DataInterface.h:57
virtual void GetName()=0
virtual double GetMean() const =0
void PullData()
Method to retrieve new data.
Definition: DataNode.h:664
virtual double GetStandardDeviation() const =0
void Reset()
Definition: DataInterface.h:111
virtual double GetMax() const =0
virtual double GetSkew() const =0
virtual void Reset()=0
void PullData()
Definition: DataInterface.h:107
void PrintDebug(std::ostream &os=std::cout)
Print debug information (useful for figuring out which modifiers you included)
Definition: DataNode.h:686
If we are in emscripten, make sure to include the header.
Definition: array.h:37
void Reset()
Methods to reset data.
Definition: DataNode.h:670
double GetKurtosis() const
Definition: DataInterface.h:102
void GetDescription()
Definition: DataInterface.h:123
void GetName()
Definition: DataInterface.h:119
virtual void GetKeyword()=0
A generic interface to a DataNode (so that you don&#39;t need to know the node&#39;s exact type) ...
Definition: DataInterface.h:19
virtual void GetDescription()=0