BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
MultiOption.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Fit/Tools/MultiOption.cpp
6 //! @brief Implements class MultiOption
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #include "Fit/Tools/MultiOption.h"
16 #include <string>
17 #include <utility>
18 
19 MultiOption::MultiOption(std::string name)
20  : m_name(std::move(name))
21 {
22 }
23 
24 std::string MultiOption::name() const
25 {
26  return m_name;
27 }
28 
29 std::string MultiOption::description() const
30 {
31  return m_description;
32 }
33 
34 void MultiOption::setDescription(const std::string& description)
35 {
37 }
38 
40 {
41  return m_value;
42 }
43 
45 {
46  return m_default_value;
47 }
48 
49 //! Sets the value of option from string.
50 void MultiOption::setFromString(const std::string& value)
51 {
52  const std::size_t idx = m_value.index();
53  switch (idx) {
54  case 0:
55  m_value = std::stoi(value);
56  break;
57  case 1:
58  m_value = std::stod(value);
59  break;
60  default:
61  m_value = value;
62  }
63 }
64 
65 //! Sets the value of option from string.
67 {
68  if (std::holds_alternative<int>(m_value))
69  return std::to_string(std::get<int>(m_value));
70  else if (std::holds_alternative<double>(m_value))
71  return std::to_string(std::get<double>(m_value));
72  else // std::holds_alternative<std::string>(m_value)
73  return std::get<std::string>(m_value);
74 }
Declares class MultiOption.
void setFromString(const std::string &value)
Sets the value of option from string.
Definition: MultiOption.cpp:50
variant_t & defaultValue()
Definition: MultiOption.cpp:44
MultiOption(std::string name="")
Definition: MultiOption.cpp:19
variant_t m_value
Definition: MultiOption.h:61
std::variant< int, double, std::string > variant_t
Definition: MultiOption.h:30
void setDescription(const std::string &description)
Definition: MultiOption.cpp:34
variant_t m_default_value
Definition: MultiOption.h:62
std::string name() const
Definition: MultiOption.cpp:24
std::string m_name
Definition: MultiOption.h:59
variant_t & value()
Definition: MultiOption.cpp:39
std::string description() const
Definition: MultiOption.cpp:29
std::string value_str()
Returns a string representation of the option's value.
Definition: MultiOption.cpp:66
std::string m_description
Definition: MultiOption.h:60