29 #ifndef HECTOR_POSE_ESTIMATION_PARAMETERS_H 30 #define HECTOR_POSE_ESTIMATION_PARAMETERS_H 34 #include <boost/shared_ptr.hpp> 35 #include <boost/function.hpp> 36 #include <boost/type_traits.hpp> 57 virtual bool isAlias()
const {
return false; }
59 template <
typename T>
bool hasType()
const {
63 template <
typename T>
const T&
as()
const {
68 template <
typename T> T&
as() {
73 operator void*()
const {
return reinterpret_cast<void *
>(!
empty()); }
88 typedef typename boost::remove_reference<typename boost::remove_const<T>::type>
::type param_type;
95 const char *
type()
const {
return typeid(param_type).name(); }
97 operator param_type&()
const {
return value_; }
98 param_type&
value() {
return value_; }
99 const param_type&
value()
const {
return value_; }
100 void set(
const param_type& value) { value_ = value; }
115 using Parameter::operator =;
118 if (
key.empty())
key = other->key;
123 template <
typename T>
126 typedef typename boost::remove_reference<typename boost::remove_const<T>::type>
::type param_type;
136 void set(
const param_type& value) {
dynamic_cast<ParameterT<T> &
>(*parameter_).
set(value); }
138 using Alias::operator =;
143 using std::list<ParameterPtr>::iterator;
144 using std::list<ParameterPtr>::const_iterator;
149 value = default_value;
150 return add(key, value);
154 return add(key, *value);
167 ParameterPtr
const&
get(
const std::string&
key)
const;
168 template <
typename T> T&
getAs(
const std::string& key)
const {
169 return get(
key)->as<T>();
172 using std::list<ParameterPtr>::erase;
173 iterator erase(
const std::string& key);
175 void initialize(ParameterRegisterFunc func)
const;
185 return result.
add(list1).
add(list2);
194 #endif // HECTOR_POSE_ESTIMATION_PARAMETERS_H virtual bool isAlias() const
virtual const char * type() const
AliasT(const ParameterPtr &other)
virtual bool empty() const
ROSCONSOLE_DECL void initialize()
T & getAs(const std::string &key) const
Alias(const ParameterPtr &other, const std::string &key)
void set(const param_type &value)
boost::shared_ptr< const Parameter > ParameterConstPtr
const param_type & value() const
ParameterList & addAlias(const std::string &key, Alias &alias)
boost::remove_reference< typename boost::remove_const< T >::type >::type param_type
bool add(const actionlib::TwoIntsGoal &req, actionlib::TwoIntsResult &res)
Parameter(Parameter &other)
ParameterList & add(const std::string &key, T &value, const T &default_value)
virtual void operator()(ParameterPtr)
ParameterT(const std::string &key, param_type &value)
Alias(const ParameterPtr &other)
ParameterT(Parameter &other)
const char * type() const
virtual bool isAlias() const
Parameter & operator=(const T &value)
static ParameterList operator+(ParameterList const &list1, ParameterList const &list2)
Parameter(const std::string &key)
AliasT(const ParameterPtr &other, const std::string &key)
ParameterList & add(const std::string &key, T *value)
const param_type & value() const
boost::function< void(ParameterPtr)> ParameterRegisterFunc
boost::remove_reference< typename boost::remove_const< T >::type >::type param_type
virtual ParameterPtr clone()
boost::shared_ptr< Parameter > ParameterPtr