#pragma once
#include "common.h"
///
/// 数值转换抽象接口
///
class ValueConvert : public Serializable {
public:
virtual ~ValueConvert() = default;
virtual QString name() const = 0;
virtual DataType inType() const = 0;
virtual DataType outType() const = 0;
virtual QVariant convert(const QVariant& value) const = 0;
};
namespace convert {
class AbstractValueConvert : public ValueConvert {
private:
QString typename_store;
DataType _in_type, _out_type;
public:
AbstractValueConvert(const QString& nm, DataType in, DataType out);
QString name() const override;
DataType inType() const override;
DataType outType() const override;
void loadFrom(std::shared_ptr core, const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
class DoubleWithLSB : public AbstractValueConvert {
private:
double _lsb_value;
public:
DoubleWithLSB();
void setLSB(double lsbv);
double getLSB() const;
QVariant convert(const QVariant& value) const override;
std::shared_ptr newDefault() const override;
};
}