41 : m_child_mng(
nullptr)
43 , m_parameters_have_changed(
false)
46 virtual ~BaseParameterMng()
54 BaseParameterMng* getChild()
58 m_child_mng =
new BaseParameterMng();
63 [[nodiscard]] BaseParameterMng
const* getChild()
const {
return m_child_mng; }
65 [[nodiscard]]
bool hasChild()
const {
return (m_nb_child != 0); }
67 [[nodiscard]]
const BaseParameterMng* getChild(Arccore::Integer child)
const
69 ALIEN_ASSERT(m_nb_child > 0 && child < m_nb_child,
"Inconsistent child values");
70 return &m_child_mng[child];
73 BaseParameterMng* getChild(Integer child)
75 ALIEN_ASSERT(m_nb_child > 0 && child < m_nb_child,
"Inconsistent child values");
76 return &m_child_mng[child];
79 void setNbChild(Integer nbChild)
81 if (m_nb_child == 1 || m_nb_child == 0)
86 m_child_mng =
new BaseParameterMng[nbChild];
89 template <
typename ValueT>
90 std::map<std::string, ValueT>
const& getParams()
const;
92 template <
typename ValueT>
93 std::map<std::string, ValueT>& getParams();
95 template <
typename ValueT>
96 void setParameter(std::string
const& key, ValueT
const& value)
98 getParams<ValueT>()[key] = value;
101 template <
typename ValueT>
102 ValueT getParameter(std::string
const& key, ValueT default_value)
const
104 auto iter = getParams<ValueT>().find(key);
105 if (iter == getParams<ValueT>().end())
106 return default_value;
111 template <
typename ValueT>
113 std::vector<std::string>& options, std::map<std::string, ValueT>
const& params)
115 for (
auto iter = params.begin(); iter != params.end(); ++iter) {
116 options.push_back(iter->first);
117 std::stringstream value_str;
118 value_str << iter->second;
119 options.push_back(value_str.str());
123 void addOptions(std::vector<std::string>& options)
125 addOptions(options, m_int_params);
126 addOptions(options, m_double_params);
127 addOptions(options, m_string_params);
130 void notifyParamChangesObserver() { m_parameters_have_changed =
true; }
133 void resetParamChangesObserver() { m_parameters_have_changed =
false; }
135 bool needUpdate() {
return m_parameters_have_changed; }
138 std::map<std::string, int> m_int_params;
139 std::map<std::string, double> m_double_params;
140 std::map<std::string, std::string> m_string_params;
141 BaseParameterMng* m_child_mng;
143 bool m_parameters_have_changed;