/* * SettableValue.hh * * Created on: 10 авг. 2020 г. * Author: LeonidTitov */ #ifndef UMLIBRARY_SCHEMATIC_SETTABLEVALUE_HH_ #define UMLIBRARY_SCHEMATIC_SETTABLEVALUE_HH_ #include "../systemic/IValueAsync.hpp" #include namespace schematic { template class SettableBase : public systemic::IValueType { public: SettableBase(); void set( T value ); T get() const; const volatile T & value() const; protected: T stored_value; }; class SettableValue : public SettableBase { public: struct Setting { float preset_value; //!<Предустановленное значение. bool isValid(); }; void configure( Setting & config ); }; class SettableFlag : public SettableBase { public: struct Setting { uint16_t preset_value; //!<Предустановленное значение. bool isValid(); }; void configure( Setting & config ); }; } template inline schematic::SettableBase::SettableBase() : stored_value(T(0)) {} template inline void schematic::SettableBase::set( T value ) { stored_value = value; } template inline T schematic::SettableBase::get() const { return stored_value; } template inline const volatile T & schematic::SettableBase::value() const { return stored_value; } #endif /* UMLIBRARY_SCHEMATIC_SETTABLEVALUE_HH_ */