BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MultiOption Class Reference

Stores a single option for minimization algorithm. More...

Public Types

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

Public Member Functions

template<typename T >
 MultiOption (const std::string &name, const T &t, const std::string &descripion="")
 
 MultiOption (const 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 ()
 

Private Attributes

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

Detailed Description

Stores a single option for minimization algorithm.

Int, double, string values are available. Relies on boost::variant, will be switched to std::variant in C++-17.

Definition at line 30 of file MultiOption.h.

Member Typedef Documentation

◆ variant_t

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

Definition at line 32 of file MultiOption.h.

Constructor & Destructor Documentation

◆ MultiOption() [1/2]

MultiOption::MultiOption ( const std::string &  name = "")
explicit

Definition at line 18 of file MultiOption.cpp.

18 : m_name(name) {}
std::string name() const
Definition: MultiOption.cpp:20
std::string m_name
Definition: MultiOption.h:56

◆ MultiOption() [2/2]

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

Definition at line 63 of file MultiOption.h.

64 {
65  m_name = name;
66  m_description = descripion;
67  m_value = t;
68  m_default_value = t;
69 }
variant_t m_value
Definition: MultiOption.h:58
variant_t m_default_value
Definition: MultiOption.h:59
std::string m_description
Definition: MultiOption.h:57

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 40 of file MultiOption.cpp.

41 {
42  return m_default_value;
43 }

References m_default_value.

◆ description()

std::string MultiOption::description ( ) const

Definition at line 25 of file MultiOption.cpp.

26 {
27  return m_description;
28 }

References m_description.

Referenced by setDescription().

◆ get()

template<typename T >
T MultiOption::get

Returns the option's value.

Definition at line 71 of file MultiOption.h.

72 {
73  return boost::get<T>(m_value);
74 }

References m_value.

◆ getDefault()

template<typename T >
T MultiOption::getDefault

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

Definition at line 76 of file MultiOption.h.

77 {
78  return boost::get<T>(m_default_value);
79 }

References m_default_value.

◆ name()

std::string MultiOption::name ( ) const

Definition at line 20 of file MultiOption.cpp.

21 {
22  return m_name;
23 }

References m_name.

Referenced by MultiOption().

◆ setDescription()

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

Definition at line 30 of file MultiOption.cpp.

31 {
33 }
std::string description() const
Definition: MultiOption.cpp:25

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.

TODO find more elegant way (without if/else and boost::lexical_cast

Definition at line 48 of file MultiOption.cpp.

49 {
50  if (m_value.which() == 0)
51  m_value = boost::lexical_cast<int>(value);
52 
53  else if (m_value.which() == 1)
54  m_value = boost::lexical_cast<double>(value);
55 
56  else
57  m_value = value;
58 }
variant_t & value()
Definition: MultiOption.cpp:35

References m_value, and value().

Here is the call graph for this function:

◆ value()

MultiOption::variant_t & MultiOption::value ( )

Definition at line 35 of file MultiOption.cpp.

36 {
37  return m_value;
38 }

References m_value.

Referenced by setFromString().

Member Data Documentation

◆ m_default_value

variant_t MultiOption::m_default_value
private

Definition at line 59 of file MultiOption.h.

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

◆ m_description

std::string MultiOption::m_description
private

Definition at line 57 of file MultiOption.h.

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

◆ m_name

std::string MultiOption::m_name
private

Definition at line 56 of file MultiOption.h.

Referenced by MultiOption(), and name().

◆ m_value

variant_t MultiOption::m_value
private

Definition at line 58 of file MultiOption.h.

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


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