00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef ABSTRACTCARDIACCELLWITHMODIFIERS_HPP_
00030 #define ABSTRACTCARDIACCELLWITHMODIFIERS_HPP_
00031
00032 #include <boost/shared_ptr.hpp>
00033 #include <map>
00034 #include "AbstractModifier.hpp"
00035 #include "AbstractIvpOdeSolver.hpp"
00036 #include "AbstractStimulusFunction.hpp"
00037 #include "AbstractCvodeCell.hpp"
00038 #include "AbstractCardiacCell.hpp"
00039
00044 template<class CARDIAC_CELL>
00045 class AbstractCardiacCellWithModifiers : public CARDIAC_CELL
00046 {
00047 private:
00049 std::map<std::string, boost::shared_ptr<AbstractModifier>* > mModifiersMap;
00050
00051 protected:
00058 void AddModifier(std::string modifierName, boost::shared_ptr<AbstractModifier>& pModifier);
00059
00060 public:
00072 AbstractCardiacCellWithModifiers(boost::shared_ptr<AbstractIvpOdeSolver> pOdeSolver,
00073 unsigned numberOfStateVariables,
00074 unsigned voltageIndex,
00075 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00076
00083 boost::shared_ptr<AbstractModifier> GetModifier(std::string modifierName);
00084
00091 void SetModifier(std::string modifierName, boost::shared_ptr<AbstractModifier>& pNewModifier);
00092
00093 };
00094
00095 #endif // ABSTRACTCARDIACCELLWITHMODIFIERS_HPP_