2025-08-01 01:47:41 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QJsonObject>
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
2025-08-02 02:04:30 +00:00
|
|
|
|
#define NAME(u) #u
|
2025-08-02 07:02:35 +00:00
|
|
|
|
#define INT32_SAVE(varx, obj) obj[NAME(varx)] = varx;
|
|
|
|
|
#define INT32_PEAK(varx, obj) varx = obj[NAME(varx)].toInt();
|
|
|
|
|
#define STRLIST_SAVE(list, obj) obj[NAME(list)] = list.join(";");
|
|
|
|
|
#define STRLIST_PEAK(list, obj) list = obj[NAME(list)].toString().split(";");
|
|
|
|
|
#define STRING_PEAK(codec_name, obj) codec_name = obj[NAME(codec_name)].toString();
|
|
|
|
|
#define STRING_SAVE(codec_name, obj) obj[NAME(codec_name)] = codec_name;
|
|
|
|
|
#define OBJECT_SAVE(objn, obj) obj[NAME(objn)] = objn;
|
|
|
|
|
#define OBJECT_PEAK(objn, obj) objn = obj[NAME(objn)].toObject();
|
|
|
|
|
#define ARRAY_SAVE(objn, obj) obj[NAME(objn)] = objn;
|
|
|
|
|
#define ARRAY_PEAK(objn, obj) objn = obj[NAME(objn)].toArray();
|
2025-08-02 02:04:30 +00:00
|
|
|
|
|
2025-08-02 02:42:39 +00:00
|
|
|
|
class TranslateBasic;
|
2025-08-01 01:47:41 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>л<EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
class Serializable {
|
|
|
|
|
public:
|
|
|
|
|
virtual ~Serializable() = default;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
2025-08-02 02:42:39 +00:00
|
|
|
|
virtual void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) = 0;
|
2025-08-01 01:47:41 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>л<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
virtual void saveTo(QJsonObject& obj) const = 0;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>ڲ<EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
enum class DataType {
|
|
|
|
|
TextString,
|
|
|
|
|
Integer, // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
Unsigned,// <20><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
Flt32,
|
|
|
|
|
Dbl64,
|
|
|
|
|
LIST_COLLECTION,
|
|
|
|
|
UNION_COMBINATE,
|
2025-08-02 07:02:35 +00:00
|
|
|
|
SUB_RULE,
|
2025-08-01 01:47:41 +00:00
|
|
|
|
};
|