BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
MultiOption Class Reference

Description

Stores a single option for minimization algorithm. Int, double, string values are available.

Definition at line 28 of file MultiOption.h.

Collaboration diagram for MultiOption:
[legend]

Public Types

using variant_t = std::variant< int, double, std::string >
 

Public Member Functions

template<typename T >
 MultiOption (const std::string &name, const T &t, const std::string &descripion="")
 
 MultiOption (std::string name="")
 
variant_tdefaultValue ()
 
std::string description () const
 
template<typename T >
get () const
 Returns the option's value. More...
 
template<typename T >
getDefault () const
 Returns the option's default value (i.e. used during construction) More...
 
std::string name () const
 
void setDescription (const std::string &description)
 
void setFromString (const std::string &value)
 Sets the value of option from string. More...
 
variant_tvalue ()
 
std::string value_str ()
 Returns a string representation of the option's value. More...
 

Private Attributes

variant_t m_default_value
 
std::string m_description
 
std::string m_name
 
variant_t m_value
 

Member Typedef Documentation

◆ variant_t

using MultiOption::variant_t = std::variant<int, double, std::string>

Definition at line 30 of file MultiOption.h.

Constructor & Destructor Documentation

◆ MultiOption() [1/2]

MultiOption::MultiOption ( std::string  name = "")

Definition at line 19 of file MultiOption.cpp.

20  : m_name(std::move(name))
21 {
22 }
std::string name() const
Definition: MultiOption.cpp:24
std::string m_name
Definition: MultiOption.h:59

◆ MultiOption() [2/2]

template<typename T >
MultiOption::MultiOption ( const std::string &  name,
const T &  t,
const std::string &  descripion = "" 
)

Definition at line 66 of file MultiOption.h.

67 {
68  m_name = name;
69  m_description = descripion;
70  m_value = t;
71  m_default_value = t;
72 }
variant_t m_value
Definition: MultiOption.h:61
variant_t m_default_value
Definition: MultiOption.h:62
std::string m_description
Definition: MultiOption.h:60

References m_default_value, m_description, m_name, m_value, and name().

Here is the call graph for this function:

Member Function Documentation

◆ defaultValue()

MultiOption::variant_t & MultiOption::defaultValue ( )

Definition at line 44 of file MultiOption.cpp.

45 {
46  return m_default_value;
47 }

References m_default_value.

◆ description()

std::string MultiOption::description ( ) const

Definition at line 29 of file MultiOption.cpp.

30 {
31  return m_description;
32 }

References m_description.

Referenced by setDescription().

◆ get()

template<typename T >
T MultiOption::get

Returns the option's value.

Definition at line 75 of file MultiOption.h.

76 {
77  return std::get<T>(m_value);
78 }

References m_value.

◆ getDefault()

template<typename T >
T MultiOption::getDefault

Returns the option's default value (i.e. used during construction)

Definition at line 81 of file MultiOption.h.

82 {
83  return std::get<T>(m_default_value);
84 }

References m_default_value.

◆ name()

std::string MultiOption::name ( ) const

Definition at line 24 of file MultiOption.cpp.

25 {
26  return m_name;
27 }

References m_name.

Referenced by MultiOption().

◆ setDescription()

void MultiOption::setDescription ( const std::string &  description)

Definition at line 34 of file MultiOption.cpp.

35 {
37 }
std::string description() const
Definition: MultiOption.cpp:29

References description(), and m_description.

Here is the call graph for this function:

◆ setFromString()

void MultiOption::setFromString ( const std::string &  value)

Sets the value of option from string.

Definition at line 50 of file MultiOption.cpp.

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 }
variant_t & value()
Definition: MultiOption.cpp:39

References m_value, and value().

Here is the call graph for this function:

◆ value()

MultiOption::variant_t & MultiOption::value ( )

Definition at line 39 of file MultiOption.cpp.

40 {
41  return m_value;
42 }

References m_value.

Referenced by setFromString().

◆ value_str()

std::string MultiOption::value_str ( )

Returns a string representation of the option's value.

Sets the value of option from string.

Definition at line 66 of file MultiOption.cpp.

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 }

References m_value.

Member Data Documentation

◆ m_default_value

variant_t MultiOption::m_default_value
private

Definition at line 62 of file MultiOption.h.

Referenced by MultiOption(), defaultValue(), and getDefault().

◆ m_description

std::string MultiOption::m_description
private

Definition at line 60 of file MultiOption.h.

Referenced by MultiOption(), description(), and setDescription().

◆ m_name

std::string MultiOption::m_name
private

Definition at line 59 of file MultiOption.h.

Referenced by MultiOption(), and name().

◆ m_value

variant_t MultiOption::m_value
private

Definition at line 61 of file MultiOption.h.

Referenced by MultiOption(), get(), setFromString(), value(), and value_str().


The documentation for this class was generated from the following files: