MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/systemic/IValueAsync.hpp
2024-06-07 11:12:56 +03:00

69 lines
1.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* IValueAsync.hpp
*
* Created on: 6 дек. 2019 г.
* Author: titov
*/
#ifndef SOURCE_SYSTEMIC_IVALUEASYNC_HPP_
#define SOURCE_SYSTEMIC_IVALUEASYNC_HPP_
namespace systemic {
//!Интерфейс установки значения.
template<typename T>
struct IValueTypeSet {
typedef T TypeInput;
virtual void set( T ) = 0;
// virtual ~IValueTypeSet() = default;
};
template<typename T>
struct IValueTypeGet {
typedef T TypeOutput;
virtual T get() const = 0;
// virtual ~IValueTypeGet() = default;
};
template<typename T>
struct IValueTypeOutput {
typedef T TypeSet;
typedef IValueTypeSet<TypeSet> SetInterface;
virtual void set_output( SetInterface * ) = 0;
// virtual ~IValueTypeOutput() = default;
};
template<typename ValueType>
struct IValueType : public systemic::IValueTypeSet<ValueType>, public systemic::IValueTypeGet<ValueType> {
virtual void set( ValueType ) = 0;
virtual ValueType get() const = 0;
//virtual ~IValueType() = default;
};
template<typename ValueType>
struct IValueTransform {
virtual ValueType operator()( ValueType ) = 0;
};
template<typename ValueType>
struct BaseValue : public IValueType<ValueType> {
void set( ValueType new_value ) { value = new_value; }
ValueType get() const { return value; }
ValueType & value;
BaseValue( ValueType & value ) : value(value) {}
};
}
#endif /* SOURCE_SYSTEMIC_IVALUEASYNC_HPP_ */