protected: \
Parameter m_params; \
public: \
const Parameter& getParameter() const { \
return m_params; \
} \
\
void setParameter(const Parameter& param) { \
m_params = param; \
} \
\
bool haveParam(const string& name) const { \
return m_params.have(name); \
} \
\
template <typename ValueType> \
void setParam(const string& name, const ValueType& value) { \
m_params.set<ValueType>(name, value); \
} \
\
template <typename ValueType> \
ValueType getParam(const string& name) const { \
return m_params.get<ValueType>(name); \
}