QBinaryTranslate/TranslateUI/convert_basic.h

50 lines
1.1 KiB
C
Raw Normal View History

2025-08-01 01:47:41 +00:00
#pragma once
#include "common.h"
/// <summary>
/// <20><>ֵת<D6B5><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
/// </summary>
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:
2025-08-10 09:02:18 +00:00
QString typename_store;
2025-08-01 01:47:41 +00:00
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<TranslateBasic> core, const QJsonObject& obj) override;
2025-08-01 01:47:41 +00:00
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<Serializable> newDefault() const override;
};
}