1#ifndef DUNE_FEM_IO_PARAMETER_READER_HH
2#define DUNE_FEM_IO_PARAMETER_READER_HH
22 static const std::string defaultKeyForExistCheck(
"__ParameterReader::check-exists__");
23 return defaultKeyForExistCheck;
29 template<
class Parameter >
44 bool exists (
const std::string &key )
const
59 void get (
const std::string &key, T &value )
const
61 const std::string *
string =
parameter_( key,
nullptr );
79 void get (
const std::string &key,
const T &defaultValue, T &value )
const
82 const std::string *
string =
parameter_( key, &defaultString );
98 void get (
const std::string &key,
const char* defaultValue, std::string &value )
const
100 const std::string defaultString( defaultValue );
101 const std::string *
string =
parameter_( key, &defaultString );
117 template<
class T,
class Val
idator >
118 void getValid (
const std::string &key,
const Validator &validator, T &value )
const
120 const std::string *
string =
parameter_( key,
nullptr );
138 template<
class T,
class Val
idator >
139 void getValid (
const std::string &key,
const T &defaultValue,
const Validator &validator, T &value )
const
142 const std::string *
string =
parameter_( key, &defaultString );
178 T
getValue (
const std::string &key,
const T &defaultValue )
const
180 T value = defaultValue;
181 get( key, defaultValue, value );
196 template<
class T,
class Val
idator >
197 T
getValidValue (
const std::string &key,
const Validator &validator )
const
216 template<
class T,
class Val
idator >
217 T
getValidValue (
const std::string &key,
const T &defaultValue,
const Validator &validator )
const
220 getValid( key, defaultValue, validator, value );
225 int getEnum (
const std::string &key,
const std::string (&values)[ n ] )
const
227 const std::string *
string =
parameter_( key,
nullptr );
230 return getEnumeration( key, *
string, values );
234 int getEnum (
const std::string &key,
const std::string (&values)[ n ],
int defaultValue )
const
236 const std::string *
string =
parameter_( key, &values[ defaultValue ] );
237 return getEnumeration( key, *
string, values );
240 int getEnum (
const std::string &key,
const std::vector<std::string> &values )
const
242 const std::string *
string =
parameter_( key,
nullptr );
245 return getEnumeration( key, *
string, values );
248 int getEnum (
const std::string &key,
const std::vector<std::string> &values,
int defaultValue )
const
250 const std::string *
string =
parameter_( key, &values[ defaultValue ] );
251 return getEnumeration( key, *
string, values );
261 static int getEnumeration (
const std::string &key,
const std::string& value,
const std::string (&values)[ n ] )
263 for(
int i = 0; i < n; ++i )
265 if( value == values[ i ] )
272 if( (j < 0) || (j >= n) )
274 std::cerr << std::endl <<
"Parameter '" << key <<
"' invalid." << std::endl;
275 std::cerr <<
"Valid values are: ";
276 for(
int i = 0; i < n; ++i )
277 std::cerr << values[ i ] << (i < n-1 ?
", " :
"");
278 std::cerr << std::endl << std::endl;
279 DUNE_THROW( ParameterInvalid,
"Parameter '" << key <<
"' invalid." );
283 static int getEnumeration (
const std::string &key,
const std::string& value,
const std::vector<std::string> &values )
285 for(
unsigned int i = 0; i < values.size(); ++i )
287 if( value == values[ i ] )
294 if( (j < 0) || (j >= (
int)values.size()) )
296 std::cerr << std::endl <<
"Parameter '" << key <<
"' invalid." << std::endl;
297 std::cerr <<
"Valid values are: ";
298 for(
unsigned int i = 0; i < values.size(); ++i )
299 std::cerr << values[ i ] << (i < values.size()-1 ?
", " :
"");
300 std::cerr << std::endl << std::endl;
301 DUNE_THROW( ParameterInvalid,
"Parameter '" << key <<
"' invalid." );
Definition: bindguard.hh:11
static const std::string & checkParameterExistsString()
Definition: reader.hh:20
Container for User Specified Parameters.
Definition: io/parameter.hh:191
Definition: io/parameter/exceptions.hh:17
Definition: io/parameter/exceptions.hh:26
static bool parse(const std::string &s, T &value)
Definition: parser.hh:22
static std::string toString(const T &value)
Definition: parser.hh:35
void reset()
Definition: reader.hh:257
void get(const std::string &key, const char *defaultValue, std::string &value) const
get optional parameter (special case for string)
Definition: reader.hh:98
int getEnum(const std::string &key, const std::string(&values)[n]) const
Definition: reader.hh:225
Parameter parameter()
Definition: reader.hh:255
T getValidValue(const std::string &key, const T &defaultValue, const Validator &validator) const
get optional parameter
Definition: reader.hh:217
const Parameter parameter() const
Definition: reader.hh:256
ThisType * clone() const
Definition: reader.hh:254
void get(const std::string &key, const T &defaultValue, T &value) const
get optional parameter
Definition: reader.hh:79
void getValid(const std::string &key, const T &defaultValue, const Validator &validator, T &value) const
get optional parameter
Definition: reader.hh:139
int getEnum(const std::string &key, const std::string(&values)[n], int defaultValue) const
Definition: reader.hh:234
void get(const std::string &key, T &value) const
get mandatory parameter
Definition: reader.hh:59
T getValue(const std::string &key) const
get mandatory parameter
Definition: reader.hh:159
T getValue(const std::string &key, const T &defaultValue) const
get optional parameter
Definition: reader.hh:178
int getEnum(const std::string &key, const std::vector< std::string > &values) const
Definition: reader.hh:240
bool exists(const std::string &key) const
check, whether a parameter is defined
Definition: reader.hh:44
Parameter parameter_
Definition: reader.hh:307
T getValidValue(const std::string &key, const Validator &validator) const
get optional parameter
Definition: reader.hh:197
BasicParameterReader(Parameter parameter=Parameter())
Definition: reader.hh:33
int getEnum(const std::string &key, const std::vector< std::string > &values, int defaultValue) const
Definition: reader.hh:248
BasicParameterReader< Parameter > ThisType
Definition: reader.hh:32
void getValid(const std::string &key, const Validator &validator, T &value) const
get mandatory parameter
Definition: reader.hh:118