SourceXtractorPlusPlus  0.10
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
ModelFitting::DependentParameter< Parameters > Class Template Reference

Implementation of a parameter depending on an arbitrary number of other parameters. More...

#include <DependentParameter.h>

Inheritance diagram for ModelFitting::DependentParameter< Parameters >:
[legend]
Collaboration diagram for ModelFitting::DependentParameter< Parameters >:
[legend]

Public Types

using ValueCalculator = std::function< double(decltype(std::declval< Parameters >() ->getValue())...)>
 
- Public Types inherited from ModelFitting::BasicParameter
using ParameterObserver = std::function< void(double)>
 

Public Member Functions

 DependentParameter (ValueCalculator calculator, Parameters...parameters)
 
virtual ~DependentParameter ()=default
 
double getValue () const override
 
- Public Member Functions inherited from ModelFitting::BasicParameter
virtual ~BasicParameter ()
 
 BasicParameter (const BasicParameter &)=delete
 
BasicParameteroperator= (const BasicParameter &)=delete
 
 BasicParameter (BasicParameter &&)=delete
 
BasicParameteroperator= (BasicParameter &&)=delete
 
std::size_t addObserver (ParameterObserver observer)
 The addObserver method adding observer to the member list. More...
 
bool removeObserver (std::size_t id)
 
bool isObserved () const
 

Static Public Attributes

static constexpr int PARAM_NO = sizeof...(Parameters)
 

Private Member Functions

template<typename First , typename... Rest>
void inputParameterLoop (First &first, Rest &...rest)
 
template<typename Last >
void inputParameterLoop (Last &last)
 
template<typename... ParamValues>
void update (ParamValues...values)
 
void update (decltype(std::declval< Parameters >() ->getValue())...values)
 
template<typename Param >
void addParameterObserver (int i, Param &param)
 

Private Attributes

std::shared_ptr< ValueCalculatorm_calculator
 function to calculate the dependent parameter value More...
 
std::shared_ptr< std::array
< std::shared_ptr
< BasicParameter >, PARAM_NO > > 
m_params
 

Additional Inherited Members

- Protected Types inherited from ModelFitting::BasicParameter
typedef std::function< void(void)> GetValueHook
 
- Protected Member Functions inherited from ModelFitting::BasicParameter
 BasicParameter (const double value)
 
virtual void setValue (const double new_value)
 
- Protected Attributes inherited from ModelFitting::BasicParameter
GetValueHook m_get_value_hook
 
double m_value
 

Detailed Description

template<typename... Parameters>
class ModelFitting::DependentParameter< Parameters >

Implementation of a parameter depending on an arbitrary number of other parameters.

Variadic template implementation of a parameter depending on an arbitrary number of other parameters. A dependent parameter cannot be copied, but only moved.

DependentParameter creation should be achieved using the factory method createDependentParameter(...) provide after the end of this class.

Definition at line 48 of file DependentParameter.h.

Member Typedef Documentation

template<typename... Parameters>
using ModelFitting::DependentParameter< Parameters >::ValueCalculator = std::function<double(decltype(std::declval<Parameters>()->getValue())...)>

Definition at line 54 of file DependentParameter.h.

Constructor & Destructor Documentation

template<typename... Parameters>
ModelFitting::DependentParameter< Parameters >::DependentParameter ( ValueCalculator  calculator,
Parameters...  parameters 
)
inline

This constructor take a function which is used to compute the dependent parameter value as a function of input parameter values.

Definition at line 60 of file DependentParameter.h.

template<typename... Parameters>
virtual ModelFitting::DependentParameter< Parameters >::~DependentParameter ( )
virtualdefault

Member Function Documentation

template<typename... Parameters>
template<typename Param >
void ModelFitting::DependentParameter< Parameters >::addParameterObserver ( int  i,
Param &  param 
)
inlineprivate
template<typename... Parameters>
double ModelFitting::DependentParameter< Parameters >::getValue ( ) const
inlineoverridevirtual
template<typename... Parameters>
template<typename First , typename... Rest>
void ModelFitting::DependentParameter< Parameters >::inputParameterLoop ( First &  first,
Rest &...  rest 
)
inlineprivate
template<typename... Parameters>
template<typename Last >
void ModelFitting::DependentParameter< Parameters >::inputParameterLoop ( Last &  last)
inlineprivate

Definition at line 97 of file DependentParameter.h.

template<typename... Parameters>
template<typename... ParamValues>
void ModelFitting::DependentParameter< Parameters >::update ( ParamValues...  values)
inlineprivate
template<typename... Parameters>
void ModelFitting::DependentParameter< Parameters >::update ( decltype(std::declval< Parameters >() ->getValue())...  values)
inlineprivate

Definition at line 112 of file DependentParameter.h.

Member Data Documentation

template<typename... Parameters>
std::shared_ptr<ValueCalculator> ModelFitting::DependentParameter< Parameters >::m_calculator
private

function to calculate the dependent parameter value

Definition at line 80 of file DependentParameter.h.

Referenced by ModelFitting::DependentParameter< ModelFitting::ModelFitting::EngineParameter >::update().

template<typename... Parameters>
std::shared_ptr<std::array<std::shared_ptr<BasicParameter>, PARAM_NO> > ModelFitting::DependentParameter< Parameters >::m_params
private
template<typename... Parameters>
constexpr int ModelFitting::DependentParameter< Parameters >::PARAM_NO = sizeof...(Parameters)
static

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