Data objects factory

class mdk::DataFactory

A generic provider of data classes derived from a model and a parameter file. This class is provided chiefly for convenience.

Public Functions

inline DataFactory(Model const &model, param::Parameters const &params)
template<typename Data>
inline Data const &data()

Extract a data class of type Data, if such is defined; otherwise, one will most likely get a linker error, as relevant template specialzations of /p create are placed in a .cpp file.

Template Parameters

Data – Type of data class to retrieve

Returns

A const reference to a stored data class.

Private Functions

template<typename Data>
Data create() const

Underlying data class constructor.

Template Parameters

Data – Data class to construct

Returns

Constructed data class.

template<>
Chains create() const
template<>
Charges create() const
template<>
Masses create() const
template<>
Types create() const
template<>
Model create() const

Private Members

Model const *model
param::Parameters const *params
std::unordered_map<std::type_index, std::shared_ptr<void>> savedData

A realization of a heterogeneous container. It holds values based on the types of elements, i.e. at most one value of each type can be stored. Using std::shared_ptr<void> allows for safe destruction of stored entities.