#pragma once #include #include #define NAME(u) #u #define INT32_SAVE(varx) obj[NAME(varx)] = varx; #define INT32_PEAK(varx) varx = obj[NAME(varx)].toInt(); #define STRLIST_SAVE(list) obj[NAME(list)] = list.join(";"); #define STRLIST_PEAK(list) list = obj[NAME(list)].toString().split(";"); #define STRING_PEAK(codec_name) codec_name = obj[NAME(codec_name)].toString(); #define STRING_SAVE(codec_name) obj[NAME(codec_name)] = codec_name; class TranslateBasic; /// /// 序列化实体 /// class Serializable { public: virtual ~Serializable() = default; /// /// 反序列化 /// /// virtual void loadFrom(std::shared_ptr core, const QJsonObject& obj) = 0; /// /// 序列化 /// /// virtual void saveTo(QJsonObject& obj) const = 0; /// /// 创建默认副本 /// /// virtual std::shared_ptr newDefault() const = 0; }; /// /// 内部使用的数据类型 /// enum class DataType { TextString, Integer, // 整形 Unsigned,// 无符号整形 Flt32, Dbl64, LIST_COLLECTION, UNION_COMBINATE, };