FRIBParallelanalysis  1.0
FrameworkforMPIParalleldataanalysisatFRIB
TreeVariable.h
Go to the documentation of this file.
1 /*
2  This software is Copyright by the Board of Trustees of Michigan
3  State University (c) Copyright 2017.
4 
5  You may use this software under the terms of the GNU public license
6  (GPL). The terms of this license are described at:
7 
8  http://www.gnu.org/licenses/gpl.txt
9 
10  Authors:
11  Ron Fox
12  Giordano Cerriza
13  FRIB
14  Michigan State University
15  East Lansing, MI 48824-1321
16 */
17 
21 #ifndef TREEVARIABLE_H
22 #define TREEVARIABLE_H
23 
24 #include <string>
25 #include <map>
26 #include <vector>
27 
28 namespace frib {
29  namespace analysis {
53  class CTreeVariable {
54  // Tree parameter metadata/data
55  public:
56  typedef struct _Definition {
57  double s_value;
58  std::string s_units;
59  bool s_definitionChanged;
60  bool s_valueChanged;
61  _Definition();
62  _Definition(double value);
63  _Definition(double value, const char* pUnits);
64  _Definition(const _Definition& rhs);
66  // Static data:
67  private:
68  static std::map<std::string, Definition> m_dictionary;
69  // Static private methods
70 
71  public:
72  typedef std::map<std::string, Definition>::iterator
73  TreeVariableIterator;
74 
75  // Per object data:
76  private:
77  std::string m_name;
78  pDefinition m_pDefinition;
79  private:
80 
81  static Definition* createDefinition(
82  const char* name, double value, const char* pUnits
83  );
84 
85  // static public methods
86 
87  public:
88  static pDefinition lookupDefinition(const char* name);
89  static std::vector<std::string> getNames();
90  static std::vector<std::pair<std::string, const Definition*>>
92  static TreeVariableIterator begin();
93  static TreeVariableIterator end();
94  static TreeVariableIterator find(std::string name);
95  static size_t size();
96 
97  // Object methods
98 
99  CTreeVariable();
100  CTreeVariable(std::string name);
101  CTreeVariable(std::string name, std::string units);
102  CTreeVariable(std::string name, double value, std::string units);
103  CTreeVariable(std::string name,const Definition& properties);
104  CTreeVariable(const CTreeVariable& rhs);
105 
106  ~CTreeVariable();
107 
108  void Initialize(std::string name, double value, std::string units);
109 
110 
111  void Bind();
112 
113 
114  operator double() const;
115  CTreeVariable& operator=(double rhs);
117  CTreeVariable& operator+=(double rhs);
118  CTreeVariable& operator-=(double rhs);
119  CTreeVariable& operator*=(double rhs);
120  CTreeVariable& operator/=(double rhs);
121  double operator++(int dummy);
123  double operator--(int dummy);
125 
126  std::string getName() const;
127  double getValue() const;
128  void setValue(double newValue);
129  std::string getUnit() const;
130  void setUnit(const char* pUnits);
131  bool hasChanged() const;
132  bool valueChanged() const;
133  void resetChanged();
134 
135 
136  };
137 
138  }
139 }
140 
141 
142 #endif
double getValue() const
Definition: TreeVariable.cpp:365
static size_t size()
Definition: TreeVariable.cpp:155
std::string getUnit() const
Definition: TreeVariable.cpp:392
void setUnit(const char *pUnits)
Definition: TreeVariable.cpp:404
Definition: TreeVariable.h:56
bool hasChanged() const
Definition: TreeVariable.cpp:417
bool valueChanged() const
Definition: TreeVariable.cpp:429
static TreeVariableIterator begin()
Definition: TreeVariable.cpp:138
static std::vector< std::string > getNames()
Definition: TreeVariable.cpp:108
void Bind()
Definition: TreeVariable.cpp:256
CTreeVariable & operator*=(double rhs)
Definition: TreeVariable.cpp:306
void setValue(double newValue)
Definition: TreeVariable.cpp:378
Definition: TreeVariable.h:53
static std::vector< std::pair< std::string, const Definition * > > getDefinitions()
Definition: TreeVariable.cpp:122
CTreeVariable & operator-=(double rhs)
Definition: TreeVariable.cpp:298
~CTreeVariable()
Definition: TreeVariable.cpp:231
static TreeVariableIterator end()
Definition: TreeVariable.cpp:147
CTreeVariable & operator+=(double rhs)
Definition: TreeVariable.cpp:289
CTreeVariable & operator++()
Definition: TreeVariable.cpp:331
void resetChanged()
Definition: TreeVariable.cpp:442
std::string getName() const
Definition: TreeVariable.cpp:355
CTreeVariable & operator=(double rhs)
Definition: TreeVariable.cpp:270
void Initialize(std::string name, double value, std::string units)
Definition: TreeVariable.cpp:241
static pDefinition lookupDefinition(const char *name)
Definition: TreeVariable.cpp:94
Definition: AbstractApplication.cpp:30
_Definition()
Definition: TreeVariable.cpp:32
CTreeVariable()
Definition: TreeVariable.cpp:166
CTreeVariable & operator--()
Definition: TreeVariable.cpp:346