40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "Parameter.h"
|
|
|
|
template <typename T>
|
|
class MinMaxParameter : public Parameter<T> {
|
|
#ifdef FSFW_INTROSPECTION
|
|
private:
|
|
MinMaxParameter(Action *owner, const char *name, T min, T max)
|
|
: Parameter<T>(owner, name), min(min), max(max) {}
|
|
|
|
public:
|
|
static MinMaxParameter createMinMaxParameter(Action *owner, const char *name, T min, T max) {
|
|
return MinMaxParameter(owner, name, min, max);
|
|
}
|
|
virtual double getMinFloating() override { return static_cast<double>(min); }
|
|
virtual int64_t getMinSigned() override { return static_cast<int64_t>(min); }
|
|
|
|
virtual double getMaxFloating() override { return static_cast<double>(max); }
|
|
virtual int64_t getMaxSigned() override { return static_cast<int64_t>(max); }
|
|
|
|
#else
|
|
private:
|
|
MinMaxParameter(Action *owner, T min, T max) : Parameter<T>(owner), min(min), max(max) {}
|
|
|
|
public:
|
|
static MinMaxParameter createMinMaxParameter(Action *owner, T min, T max) {
|
|
return MinMaxParameter(owner, min, max);
|
|
}
|
|
#endif
|
|
private:
|
|
T min;
|
|
T max;
|
|
};
|
|
|
|
#ifdef FSFW_INTROSPECTION
|
|
#define createMinMaxParameter(p1, p2, p3, p4) createMinMaxParameter(p1, p2, p3, p4)
|
|
#else
|
|
#define createMinMaxParameter(p1, p2, p3, p4) createMinMaxParameter(p1, p3, p4)
|
|
#endif |