QBinaryTranslate/TranslateUI/common.h

51 lines
1.1 KiB
C
Raw Normal View History

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
#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;
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>
virtual void loadFrom(const QJsonObject& obj) = 0;
/// <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,
};