BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MultiOption Class Reference
Collaboration diagram for MultiOption:

Public Types

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

Public Member Functions

 MultiOption (const std::string &name="")
 
template<typename T >
 MultiOption (const std::string &name, const T &t, const std::string &descripion="")
 
std::string name () const
 
std::string description () const
 
void setDescription (const std::string &description)
 
variant_tvalue ()
 
variant_tdefaultValue ()
 
template<typename T >
get () const
 
template<typename T >
getDefault () const
 
void setFromString (const std::string &value)
 

Private Attributes

std::string m_name
 
std::string m_description
 
variant_t m_value
 
variant_t m_default_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 25 of file MultiOption.h.

Member Typedef Documentation

◆ variant_t

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

Definition at line 28 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:52

◆ MultiOption() [2/2]

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

Definition at line 59 of file MultiOption.h.

60 {
61  m_name = name;
62  m_description = descripion;
63  m_value = t;
64  m_default_value = t;
65 }
variant_t m_value
Definition: MultiOption.h:54
variant_t m_default_value
Definition: MultiOption.h:55
std::string m_description
Definition: MultiOption.h:53

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

Here is the call graph for this function:

Member Function Documentation

◆ 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().

◆ 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().

◆ 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:

◆ 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().

◆ 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.

◆ get()

template<typename T >
T MultiOption::get

Returns the option's value.

Definition at line 67 of file MultiOption.h.

68 {
69  return boost::get<T>(m_value);
70 }

References m_value.

◆ getDefault()

template<typename T >
T MultiOption::getDefault

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

Definition at line 72 of file MultiOption.h.

73 {
74  return boost::get<T>(m_default_value);
75 }

References m_default_value.

◆ 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:

Member Data Documentation

◆ m_name

std::string MultiOption::m_name
private

Definition at line 52 of file MultiOption.h.

Referenced by MultiOption(), and name().

◆ m_description

std::string MultiOption::m_description
private

Definition at line 53 of file MultiOption.h.

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

◆ m_value

variant_t MultiOption::m_value
private

Definition at line 54 of file MultiOption.h.

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

◆ m_default_value

variant_t MultiOption::m_default_value
private

Definition at line 55 of file MultiOption.h.

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


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