1 #ifndef __CONFIG_UTIL_H__ 2 #define __CONFIG_UTIL_H__ 6 template<
typename StateType>
8 const std::string &keyRoot,
10 std::ostream &messageStream)
13 typename StateType::MetaDataSetType &dataDictionary(inState.Meta());
14 typename StateType::MetaDataSetType::iterator paramDataIt = dataDictionary.begin();
15 while(paramDataIt != dataDictionary.end()){
17 std::string ¶mName(paramDataIt->name);
18 messageStream <<
"Parameter name: " << paramName << std::endl;
19 int numComp = paramDataIt->ncomp;
20 int dataSize = paramDataIt->dsize;
23 std::string paramKey(
ConfigKey(keyRoot,paramName));
24 messageStream <<
"Parameter key: " << paramKey << std::endl;
25 if(inConfig.
IsSet(paramKey)){
27 char *paramPtr = inState.template GetFieldBuffer<char>(paramName);
29 *paramPtr = inConfig.
GetValue<
char>(paramKey);
31 std::vector<char> paramVec(inConfig.
GetValueVector<
char>(paramKey));
33 messageStream <<
"ERROR! Parameter " << paramName <<
" input size mismatch." 37 std::vector<char>::iterator pvIt = paramVec.begin();
38 while(pvIt != paramVec.end()){
39 paramPtr[pvIt-paramVec.begin()] = *pvIt;
43 }
else if(dataSize == 4) {
44 int *paramPtr = inState.template GetFieldBuffer<int>(paramName);
46 *paramPtr = inConfig.
GetValue<
int>(paramKey);
50 messageStream <<
"ERROR! Parameter " << paramName <<
" input size mismatch." 54 std::vector<int>::iterator pvIt = paramVec.begin();
55 while(pvIt != paramVec.end()){
56 paramPtr[pvIt-paramVec.begin()] = *pvIt;
60 }
else if(dataSize == 8) {
61 double *paramPtr = inState.template GetFieldBuffer<double>(paramName);
63 *paramPtr = inConfig.
GetValue<
double>(paramKey);
65 std::vector<double> paramVec(inConfig.
GetValueVector<
double>(paramKey));
67 messageStream <<
"ERROR! Parameter " << paramName <<
" input size mismatch." 71 std::vector<double>::iterator pvIt = paramVec.begin();
72 while(pvIt != paramVec.end()){
73 paramPtr[pvIt-paramVec.begin()] = *pvIt;
79 messageStream <<
"Not found." << std::endl;
int ConfigStateValues(fixtures::ConfigurationType &inConfig, const std::string &keyRoot, StateType &inState, std::ostream &messageStream)
std::string GetValue(const std::string &key) const
std::vector< std::string > GetValueVector(const std::string &key) const
void const size_t const size_t const size_t const int * numComp
std::string ConfigKey(const std::string &configName, const std::string &keyName)
bool IsSet(const std::string &Key) const