Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef __VARIABLES_HPP__
00050 #define __VARIABLES_HPP__
00051
00052
00053 #include <openfluid/core/TypeDefs.hpp>
00054 #include <openfluid/core/ValuesBuffer.hpp>
00055 #include <openfluid/dllexport.hpp>
00056
00057 namespace openfluid { namespace core {
00058
00059
00060 template <class T>
00061 class DLLEXPORT Variables
00062 {
00063 private :
00064
00065 typedef std::map<VariableName_t,ValuesBuffer<T> > VariablesMap_t;
00066 VariablesMap_t m_Data;
00067
00068
00069 public :
00070
00071 Variables();
00072
00073 ~Variables();
00074
00075 bool createVariable(const VariableName_t aName);
00076
00077 bool modifyValue(const VariableName_t aName, const TimeStep_t aStep, const T aValue);
00078
00079 bool appendValue(const VariableName_t aName, const T aValue);
00080
00081 bool getValue(const VariableName_t aName, const TimeStep_t aStep, T *aValue) const;
00082
00083 bool getCurrentValue(const VariableName_t aName, T *aValue) const;
00084
00085 bool isVariableExist(const VariableName_t aName) const;
00086
00087 bool isVariableExist(const VariableName_t aName, const TimeStep_t aStep) const;
00088
00089 std::vector<VariableName_t> getVariablesNames() const;
00090
00091 unsigned int getVariableValuesCount(const VariableName_t aName) const;
00092
00093 bool isAllVariablesCount(unsigned int Count) const;
00094
00095 void clear();
00096
00097 };
00098
00099
00100
00101
00102
00103
00104 template <class T>
00105 Variables<T>::Variables()
00106 {
00107
00108 }
00109
00110
00111
00112
00113
00114
00115 template <class T>
00116 Variables<T>::~Variables()
00117 {
00118
00119 }
00120
00121
00122
00123
00124
00125 template <class T>
00126 bool Variables<T>::createVariable(const VariableName_t aName)
00127 {
00128 if (!isVariableExist(aName))
00129 {
00130 m_Data[aName];
00131 return true;
00132 }
00133 return false;
00134 }
00135
00136
00137
00138
00139 template <class T>
00140 bool Variables<T>::modifyValue(const VariableName_t aName, const TimeStep_t aStep, const T aValue)
00141 {
00142 if (isVariableExist(aName,aStep))
00143 {
00144 return m_Data[aName].modifyValue(aStep,aValue);
00145 }
00146 return false;
00147 }
00148
00149
00150
00151
00152
00153
00154 template <class T>
00155 bool Variables<T>::appendValue(const VariableName_t aName, const T aValue)
00156 {
00157 if (isVariableExist(aName))
00158 {
00159 return m_Data[aName].appendValue(aValue);
00160 }
00161 return false;
00162 }
00163
00164
00165
00166
00167
00168 template <class T>
00169 bool Variables<T>::getValue(const VariableName_t aName, const TimeStep_t aStep, T* aValue) const
00170 {
00171
00172 typename VariablesMap_t::const_iterator it = m_Data.find(aName);
00173
00174 if (it != m_Data.end())
00175 {
00176 return it->second.getValue(aStep,aValue);
00177 }
00178
00179 return false;
00180 }
00181
00182
00183
00184
00185
00186
00187 template <class T>
00188 bool Variables<T>::getCurrentValue(const VariableName_t aName, T* aValue) const
00189 {
00190
00191 typename VariablesMap_t::const_iterator it = m_Data.find(aName);
00192
00193 if (it != m_Data.end())
00194 {
00195 return it->second.getCurrentValue(aValue);
00196 }
00197
00198 return false;
00199 }
00200
00201
00202
00203
00204
00205 template <class T>
00206 bool Variables<T>::isVariableExist(const VariableName_t aName) const
00207 {
00208
00209 return m_Data.find(aName) != m_Data.end();
00210 }
00211
00212
00213
00214
00215 template <class T>
00216 bool Variables<T>::isVariableExist(const VariableName_t aName, const TimeStep_t aStep) const
00217 {
00218 typename VariablesMap_t::const_iterator it;
00219
00220 it = m_Data.find(aName);
00221
00222 if (it != m_Data.end())
00223 {
00224
00225 return (aStep < it->second.getNextStep());
00226 }
00227 return false;
00228
00229 }
00230
00231
00232
00233
00234 template <class T>
00235 std::vector<VariableName_t> Variables<T>::getVariablesNames() const
00236 {
00237 std::vector<VariableName_t> TheNames;
00238
00239 typename VariablesMap_t::const_iterator it;
00240
00241 for (it = m_Data.begin() ; it != m_Data.end() ; ++it)
00242 {
00243 TheNames.push_back(it->first);
00244 }
00245
00246 return TheNames;
00247
00248 }
00249
00250
00251
00252
00253
00254
00255 template <class T>
00256 unsigned int Variables<T>::getVariableValuesCount(const VariableName_t aName) const
00257 {
00258
00259 typename VariablesMap_t::const_iterator it;
00260
00261 it = m_Data.find(aName);
00262
00263 if (it == m_Data.end()) return (-1);
00264
00265 else return it->second.getNextStep();
00266 }
00267
00268
00269
00270
00271
00272
00273 template <class T>
00274 bool Variables<T>::isAllVariablesCount(unsigned int Count) const
00275 {
00276 typename VariablesMap_t::const_iterator it;
00277
00278 for (it = m_Data.begin();it != m_Data.end();++it)
00279 {
00280 if (it->second.getNextStep() != Count) return false;
00281 }
00282 return true;
00283 }
00284
00285
00286
00287
00288
00289
00290 template <class T>
00291 void Variables<T>::clear()
00292 {
00293 m_Data.clear();
00294 }
00295
00296
00297 } }
00298
00299
00300
00301
00302 #endif