/* * SignalValidation.hh * * Created on: 28 апр. 2022 г. * Author: titov */ #ifndef UMLIBRARY_SCHEMATIC_SIGNALVALIDATION_HH_ #define UMLIBRARY_SCHEMATIC_SIGNALVALIDATION_HH_ #include "../systemic/IStatus.hh" #include "../systemic/ISignal.hh" namespace systemic { namespace detail { class SignalValidationPrevious : public ISignal { private: ISignal & raw; IStatus & valid; mutable float prev; public: SignalValidationPrevious( ISignal & raw, IStatus & valid ) : raw(raw), valid(valid) {} virtual ~SignalValidationPrevious() = default; operator float() const final; }; class SignalValidationFixed : public ISignal { private: ISignal & raw; IStatus & valid; const float fixed; public: SignalValidationFixed( ISignal & raw, IStatus & valid, float fixed ) : raw(raw), valid(valid), fixed(fixed) {} virtual ~SignalValidationFixed() = default; operator float() const final; }; class SignalValidationPreset : public ISignal { private: ISignal & raw; IStatus & valid; float preset; public: SignalValidationPreset( ISignal & raw, IStatus & valid ) : raw(raw), valid(valid) {} virtual ~SignalValidationPreset() = default; operator float() const final; struct Setting { float preset_value; //!<Предустановленное значение. bool isValid(); }; void configure( Setting & config ); }; class SignalValidationAnother: public ISignal { private: ISignal & raw; IStatus & valid; ISignal & another; public: SignalValidationAnother( ISignal & raw, IStatus & valid, ISignal & another ) : raw(raw), valid(valid), another(another) {} virtual ~SignalValidationAnother() = default; operator float() const final; }; } /* namespace detail */ } /* namespace systemic */ #endif /* UMLIBRARY_SCHEMATIC_SIGNALVALIDATION_HH_ */