14 #define DECLARE_MODEL(TYPE, NUM_PARAMS, NUM_VARS)                       \    15     DECLARE_SNIPPET(TYPE, NUM_PARAMS);                                  \    16     typedef Models::VarInitContainerBase<NUM_VARS> VarValues;        \    17     typedef Models::VarInitContainerBase<0> PreVarValues;            \    18     typedef Models::VarInitContainerBase<0> PostVarValues    20 #define IMPLEMENT_MODEL(TYPE) IMPLEMENT_SNIPPET(TYPE)    22 #define SET_VARS(...) virtual VarVec getVars() const override{ return __VA_ARGS__; }    23 #define SET_EXTRA_GLOBAL_PARAMS(...) virtual VarVec getExtraGlobalParams() const override{ return __VA_ARGS__; }    52 template<
size_t NumVars>
    59     typedef std::vector<VarInit> InitialiserArray;
    64     template<
typename... T>
    65     VarInitContainerBase(T&&... initialisers) : m_Initialisers(InitialiserArray{{std::forward<const VarInit>(initialisers)...}})
    67         static_assert(
sizeof...(initialisers) == NumVars, 
"Wrong number of initialisers");
    76         return m_Initialisers;
    84         return m_Initialisers[pos];
    91     InitialiserArray m_Initialisers;
   105     template<
typename... T>
   108         static_assert(
sizeof...(initialisers) == 0, 
"Wrong number of initialisers");
   148         return getVarVecIndex(varName, getVars());
   154         return getVarVecIndex(paramName, getExtraGlobalParams());
 size_t getExtraGlobalParamIndex(const std::string ¶mName) const
Find the index of a named extra global parameter. 
Definition: models.h:152
 
VarInit(const InitVarSnippet::Base *snippet, const std::vector< double > ¶ms)
Definition: models.h:36
 
Base class for all models - in addition to the parameters snippets have, models can have state variab...
Definition: models.h:129
 
Definition: snippet.h:185
 
Init(const InitVarSnippet::Base *snippet, const std::vector< double > ¶ms)
Definition: snippet.h:188
 
virtual VarVec getExtraGlobalParams() const
Definition: models.h:140
 
VarInit(double constant)
Definition: models.h:41
 
VarInitContainerBase(T &&... initialisers)
Definition: models.h:65
 
VarInitContainerBase(T &&... initialisers)
Definition: models.h:106
 
const std::vector< VarInit > & getInitialisers() const
Gets initialisers as a vector of Values. 
Definition: models.h:74
 
const VarInit & operator[](size_t pos) const
Definition: models.h:82
 
Definition: initVarSnippet.h:17
 
virtual VarVec getVars() const
Gets names and types (as strings) of model variables. 
Definition: models.h:136
 
size_t getVarIndex(const std::string &varName) const
Find the index of a named variable. 
Definition: models.h:146
 
VarInitContainerBase(const Snippet::ValueBase< 0 > &)
Definition: models.h:111
 
Base class for all value initialisation snippets. 
Definition: initVarSnippet.h:15
 
std::vector< Var > VarVec
Definition: snippet.h:148
 
Base class for all code snippets. 
Definition: snippet.h:112
 
std::vector< VarInit > getInitialisers() const
Gets initialisers as a vector of Values. 
Definition: models.h:119