YAP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
StatusManager.h
Go to the documentation of this file.
1 /* YAP - Yet another PWA toolkit
2  Copyright 2015, Technische Universitaet Muenchen,
3  Authors: Daniel Greenwald, Johannes Rauch
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
20 
21 #ifndef yap_StatusManager_h
22 #define yap_StatusManager_h
23 
24 #include "fwd/CalculationStatus.h"
25 #include "fwd/VariableStatus.h"
26 
27 #include "CachedValue.h"
28 #include "DataAccessor.h"
29 
30 namespace yap {
31 
33 {
34 public:
35 
38  StatusManager(const DataAccessorSet& sDA);
39 
42 
48  CachedValue::Status& status(size_t da_index, size_t cdv_index, size_t sym_index)
49  { return Statuses_[da_index][cdv_index][sym_index]; }
50 
56  const CachedValue::Status& status(size_t da_index, size_t cdv_index, size_t sym_index) const
57  { return const_cast<StatusManager*>(this)->status(da_index, cdv_index, sym_index); }
58 
63  CachedValue::Status& status(const CachedValue& cdv, size_t sym_index);
64 
69  const CachedValue::Status& status(const CachedValue& cdv, size_t sym_index) const
70  { return const_cast<StatusManager*>(this)->status(cdv, sym_index); }
71 
73 
78  template <class T>
79  void set(const CachedValue& cdv, const T& stat)
80  {
81  for (auto& s : Statuses_[cdv.owner()->index()][cdv.index()])
82  s = stat;
83  }
84 
89  template <class T>
90  void set(const DataAccessor& da, const T& stat)
91  {
92  for (auto& v : Statuses_[da.index()])
93  for (auto& s : v)
94  s = stat;
95  }
96 
100  template <class T>
101  void setAll(const T& stat)
102  {
103  for (auto& v1 : Statuses_)
104  for (auto& v2 : v1)
105  for (auto& s : v2)
106  s = stat;
107  }
108 
111  void copyCalculationStatuses(const StatusManager& sm);
112 
113 private:
114 
119  std::vector<std::vector<std::vector<CachedValue::Status> > > Statuses_;
120 
121 };
122 
123 }
124 #endif
const CachedValue::Status & status(const CachedValue &cdv, size_t sym_index) const
Definition: StatusManager.h:69
StatusManager(const DataAccessorSet &sDA)
Definition: StatusManager.cxx:13
void set(const CachedValue &cdv, const T &stat)
Definition: StatusManager.h:79
std::vector< std::vector< std::vector< CachedValue::Status > > > Statuses_
Definition: StatusManager.h:119
DataAccessor * owner() const
Definition: CachedValue.h:85
void copyCalculationStatuses(const StatusManager &sm)
Definition: StatusManager.cxx:30
CachedValue::Status & status(size_t da_index, size_t cdv_index, size_t sym_index)
Definition: StatusManager.h:48
void set(const DataAccessor &da, const T &stat)
Definition: StatusManager.h:90
Definition: StatusManager.h:32
stores calculation and variable statuses for a CachedValue
Definition: CachedValue.h:61
Class for managing cached values inside a DataPoint.
Definition: CachedValue.h:48
const int index() const
Definition: CachedValue.h:89
const CachedValue::Status & status(size_t da_index, size_t cdv_index, size_t sym_index) const
Definition: StatusManager.h:56
Abstract base class for all objects accessing DataPoint's.
Definition: DataAccessor.h:38
void setAll(const T &stat)
Definition: StatusManager.h:101
int index() const
Definition: DataAccessor.h:51