15 #ifndef BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETER_H
16 #define BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETER_H
32 IParameter(
const std::string& name, T* data,
const std::string& parent_name,
33 const std::function<
void()>& onChange);
36 virtual IParameter* clone(
const std::string& new_name =
"")
const = 0;
39 virtual bool isNull()
const {
return m_data ? false :
true; }
41 T& getData()
const {
return *m_data; }
49 const std::string& getName()
const {
return m_name; }
52 const std::string m_name;
54 const std::string m_parent_name;
55 const std::function<void()> m_onChange;
58 std::string
fullName()
const {
return m_parent_name +
"/" + m_name; }
63 const std::function<
void()>& onChange)
64 : m_name(name), m_data(data), m_parent_name(parent_name), m_onChange(onChange)
67 throw std::runtime_error(
"Attempt to construct an IParameter with null data pointer");
74 return &getData() == &other.getData();
Pure virtual base class for parameter wrapper classes RealParameter, ComponentParameter.
virtual bool isNull() const
Returns true if wrapped parameter was not initialized with proper real value.
bool hasSameData(const IParameter &other)
Returns true if two parameters are pointing to the same raw data.
std::string fullName() const
For use in error messages.