MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/schematic/action/ValueUpdateAction.hpp

52 lines
1.0 KiB
C++

/*
* 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<typename ValueType>
struct ValueUpdateAction : public systemic::IProcess {
typedef systemic::IValue<ValueType> Value;
typedef systemic::IFunctor<void> Action;
Value & value;
Action & action;
ValueType previous;
void process();
ValueUpdateAction( Value & value, Action & action ) : value(value), action(action), previous(value) {}
};
}
}
template<typename ValueType>
inline void schematic::functor::ValueUpdateAction<ValueType>::process() {
ValueType current = value;
if( previous != current )
action();
previous = current;
}
#endif /* UMLIBRARY_SCHEMATIC_ACTION_VALUEUPDATEACTION_HPP_ */