MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/schematic/CacheSetAsync.hpp

63 lines
1.1 KiB
C++

/*
* CacheSetAsync.hpp
*
* Created on: 27 íîÿá. 2023 ã.
* Author: titov
*/
#ifndef UMLIBRARY_SCHEMATIC_CACHESETASYNC_HPP_
#define UMLIBRARY_SCHEMATIC_CACHESETASYNC_HPP_
#include "../systemic/IValueAsync.hpp"
#include "../systemic/IValue.hpp"
namespace schematic {
template<typename T>
class CacheSetAsync : public systemic::IValueType<T> {
public:
CacheSetAsync( systemic::IValueType<T> & async );
const T & getCachedValue() const;
void set( T );
T get() const;
private:
T cached;
systemic::IValueType<T> & async;
};
}
template<typename T>
inline schematic::CacheSetAsync<T>::CacheSetAsync(
systemic::IValueType<T> &async) :
async(async), cached(async.get()) {}
template<typename T>
inline const T & schematic::CacheSetAsync<T>::getCachedValue() const {
return cached;
}
template<typename T>
inline void schematic::CacheSetAsync<T>::set(T valueType) {
cached = valueType;
async.set(cached);
}
template<typename T>
inline T schematic::CacheSetAsync<T>::get() const {
return cached;
}
#endif /* UMLIBRARY_SCHEMATIC_CACHESETASYNC_HPP_ */