37 #ifndef OMPL_BASE_GENERIC_PARAM_
38 #define OMPL_BASE_GENERIC_PARAM_
41 #include "ompl/util/ClassForward.h"
42 #include <boost/function.hpp>
43 #include <boost/lexical_cast.hpp>
56 OMPL_CLASS_FORWARD(GenericParam);
90 virtual bool setValue(
const std::string &value) = 0;
93 virtual std::string
getValue(
void)
const = 0;
101 setValue(boost::lexical_cast<std::string>(value));
103 catch (boost::bad_lexical_cast &e)
105 OMPL_WARN(
"Invalid value format specified for parameter '%s': %s",
name_.c_str(), e.what());
162 OMPL_ERROR(
"Setter function must be specified for parameter");
175 setter_(boost::lexical_cast<T>(value));
177 catch (boost::bad_lexical_cast &e)
180 OMPL_WARN(
"Invalid value format specified for parameter '%s': %s",
name_.c_str(), e.what());
186 OMPL_DEBUG(
"The value of parameter '%s' was set to: '%s'",
name_.c_str(), value.c_str());
195 return boost::lexical_cast<std::string>(
getter_());
197 catch (boost::bad_lexical_cast &e)
199 OMPL_WARN(
"Unable to parameter '%s' to string: %s",
name_.c_str(), e.what());
229 void add(
const GenericParamPtr ¶m);
232 void remove(
const std::string &name);
250 bool setParam(
const std::string &key,
const std::string &value);
253 bool getParam(
const std::string &key, std::string &value)
const;
260 bool setParams(
const std::map<std::string, std::string> &kv,
bool ignoreUnknown =
false);
263 void getParams(std::map<std::string, std::string> ¶ms)
const;
272 const std::map<std::string, GenericParamPtr>&
getParams(
void)
const;
275 const GenericParamPtr&
getParam(
const std::string &key)
const;
278 bool hasParam(
const std::string &key)
const;
286 return params_.size();
293 void print(std::ostream &out)
const;
297 std::map<std::string, GenericParamPtr> params_;