# bdm::UI Class Reference

UI is an abstract class which collects all the auxiliary functions useful to prepare some concrete user-infos. More...

`#include <user_info.h>`

List of all members.

## Classes
class | MappedUI
## Public Types
enum | SettingPresence { optional, compulsory }
| Enum type used to determine whether the data for concrete Settingis is compulsory or optional.
## Static Public Member Functions
Initialization of classes
The type T has to be a bdm::root descendant class
template<class T >
static shared_ptr< T > | build (const Setting &element, const string &name, SettingPresence settingPresence=optional)
template<class T >
static shared_ptr< T > | build (const Setting &element, const int index, SettingPresence settingPresence=optional)
Initialization of structures
The type T has to be int, double, string, vec, ivec or mat.
template<class T >
static bool | get (T &instance, const Setting &element, const string &name, SettingPresence settingPresence=optional)
template<class T >
static bool | get (T &instance, const Setting &element, const int index, SettingPresence settingPresence=optional)
template<class T >
static bool | get (T &instance, const Setting &element)
| The existing instance of type T is initialized with values stored in the Setting element directly.
Initialization of arrays Array<T>
The type T has to be int, double, string, vec, ivec or mat, or pointer to any root descendant.
template<class T >
static bool | get (Array< T > &array_to_load, const Setting &element, const string &name, SettingPresence settingPresence=optional)
template<class T >
static bool | get (Array< T > &array_to_load, const Setting &element, const int index, SettingPresence settingPresence=optional)
template<class T >
static bool | get (Array< T > &array_to_load, const Setting &element)
| The existing array of type T is initialized with values stored in the Setting element.
Serialization of objects and structures into a new Setting
The new child Setting can be accessed either by its name - if some name is passed as a parameter - or by its integer index. In that case, the new element is added at the very end of the current list of child Settings.
template<class T >
static void | save (const T *const instance, Setting &element, const string &name="")
| A root descendant instance is stored in the new child Setting appended to the passed element.
template<class T >
static void | save (const shared_ptr< T > &instance, Setting &element, const string &name="")
template<class T >
static void | save (const Array< T > &array_to_save, Setting &element, const string &name="")
| An Array<T> instance is stored in the new child Setting appended to the passed element.
static void | save (const mat &matrix, Setting &element, const string &name="")
| A matrix(of type mat) is stored in the new child Setting appended to the passed element.
static void | save (const ivec &vec, Setting &element, const string &name="")
| An integer vector (of type ivec) is stored in the new child Setting appended to the passed element.
static void | save (const vec &vector, Setting &element, const string &name="")
| A double vector (of type vec) is stored in the new child Setting appended to the passed element.
static void | save (const string &str, Setting &element, const string &name="")
| A string is stored in the new child Setting appended to the passed element.
static void | save (const int &integer, Setting &element, const string &name="")
| An integer is stored in the new child Setting appended to the passed element.
static void | save (const double &real, Setting &element, const string &name="")
| A double is stored in the new child Setting appended to the passed element.
## Protected Member Functions
| UI (const string &class_name, const type_info *const class_type_info)
| Constructor for internal use only, see.

## Detailed Description

UI is an abstract class which collects all the auxiliary functions useful to prepare some concrete user-infos.

See static methods 'build', 'get' and 'save'. Writing user-infos with these methods is rather simple. The rest of this class is intended for internal purposes only. Its meaning is to allow pointers to its templated descendant ParticularUI<T>.

User Infos and their use

## Constructor & Destructor Documentation

bdm::UI::UI | ( | const string & | class_name,
|  | const type_info *const | class_type_info |
| ) |  |  | `[inline, protected]`

Constructor for internal use only, see.

See also:
  ParticularUI<T>

## Member Function Documentation

template<class T >

static shared_ptr<T> bdm::UI::build | ( | const Setting & | element,
|  | const int | index,
|  | SettingPresence | settingPresence = `optional` |
| ) |  |  | `[inline, static]`

The new instance of type T* is constructed and initialized with values stored in the Setting element[index]

If there is not any sub-element indexed by index, and settingPresence is optional, an empty shared_ptr<T> is returned. When settingPresence is compulsory, the returned shared_ptr<T> is never empty (an exception is thrown when the object isn't found).

template<class T >

static shared_ptr<T> bdm::UI::build | ( | const Setting & | element,
|  | const string & | name,
|  | SettingPresence | settingPresence = `optional` |
| ) |  |  | `[inline, static]`

The new instance of type T* is constructed and initialized with values stored in the Setting element[name]

If there is not any sub-element named name and settingPresence is optional, an empty shared_ptr<T> is returned. When settingPresence is compulsory, the returned shared_ptr<T> is never empty (an exception is thrown when the object isn't found).

template<class T >

static bool bdm::UI::get | ( | Array< T > & | array_to_load,
|  | const Setting & | element,
|  | const int | index,
|  | SettingPresence | settingPresence = `optional` |
| ) |  |  | `[inline, static]`

The existing array of type T is initialized with values stored in the Setting element[index] If there is not any sub-element indexed by index, this method returns false.

template<class T >

static bool bdm::UI::get | ( | Array< T > & | array_to_load,
|  | const Setting & | element,
|  | const string & | name,
|  | SettingPresence | settingPresence = `optional` |
| ) |  |  | `[inline, static]`

The existing array of type T is initialized with values stored in the Setting element[name] If there is not any sub-element named name, this method returns false.

template<class T >

static bool bdm::UI::get | ( | T & | instance,
|  | const Setting & | element,
|  | const int | index,
|  | SettingPresence | settingPresence = `optional` |
| ) |  |  | `[inline, static]`

The existing instance of type T is initialized with values stored in the Setting element[index] If there is not any sub-element indexed by index, this method returns false.

template<class T >

static bool bdm::UI::get | ( | T & | instance,
|  | const Setting & | element,
|  | const string & | name,
|  | SettingPresence | settingPresence = `optional` |
| ) |  |  | `[inline, static]`

The existing instance of type T is initialized with values stored in the Setting element[name] If there is not any sub-element named name, this method returns false.

Referenced by bdm::MPF::from_setting(), bdm::mexDS::from_setting(), bdm::merger_base::from_setting(), bdm::Kalman< fsqmat >::from_setting(), bdm::StateSpace< sq_T >::from_setting(), bdm::MultiModel::from_setting(), bdm::EKFCh::from_setting(), bdm::enorm< sq_T >::from_setting(), bdm::mgamma::from_setting(), bdm::mgnorm< sq_T >::from_setting(), bdm::mlnorm< ldmat, enorm >::from_setting(), bdm::euni::from_setting(), bdm::egamma::from_setting(), bdm::mDirich::from_setting(), bdm::eDirich::from_setting(), bdm::egiw::from_setting(), bdm::mlognorm::from_setting(), bdm::migamma_ref::from_setting(), bdm::mprod::from_setting(), bdm::discrete_support::from_setting(), bdm::rectangular_support::from_setting(), bdm::MpdfDS::from_setting(), bdm::MemDS::from_setting(), bdm::ArxDS::from_setting(), bdm::Controller::from_setting(), bdm::BM::from_setting(), bdm::RV::from_setting(), bdm::ARX::from_setting(), bdm::PF::prior_from_set(), and bdm::PF::resmethod_from_set().

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

- user_info.h
- user_info.cpp