/* * ValueUpdateAction.hpp * * Created on: 21 δεκ. 2020 γ. * Author: titov */ #ifndef UMLIBRARY_SCHEMATIC_ACTION_VALUEUPDATEACTION_HPP_ #define UMLIBRARY_SCHEMATIC_ACTION_VALUEUPDATEACTION_HPP_ #include "../../systemic/IFunctor.hh" #include "../../systemic/IValue.hpp" #include "../../systemic/IProcess.hh" namespace schematic { namespace functor { template struct ValueUpdateAction : public systemic::IProcess { typedef systemic::IValue Value; typedef systemic::IFunctor Action; Value & value; Action & action; ValueType previous; void process(); ValueUpdateAction( Value & value, Action & action ) : value(value), action(action), previous(value) {} }; } } template inline void schematic::functor::ValueUpdateAction::process() { ValueType current = value; if( previous != current ) action(); previous = current; } #endif /* UMLIBRARY_SCHEMATIC_ACTION_VALUEUPDATEACTION_HPP_ */