92 lines
1.8 KiB
C++
92 lines
1.8 KiB
C++
/*
|
||
* 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_ */
|