diff --git a/TranslateUI/TranslateBasic.cpp b/TranslateUI/TranslateBasic.cpp index 9aee2f4..96717a9 100644 --- a/TranslateUI/TranslateBasic.cpp +++ b/TranslateUI/TranslateBasic.cpp @@ -1,50 +1,50 @@ #include "TranslateBasic.h" -AbstractTranslateUnit::AbstractTranslateUnit(const QString& name) +AbstractExtractor::AbstractExtractor(const QString& name) :_name_store(name), _byte_offset(0), _byte_count(0) { } -bool AbstractTranslateUnit::setOffsetFromPrevious(int bytes) +bool AbstractExtractor::setOffsetFromPrevious(int bytes) { this->_byte_offset = bytes; return true; } -bool AbstractTranslateUnit::setCountWithinParse(int bytes) +bool AbstractExtractor::setCountWithinParse(int bytes) { this->_byte_count = bytes; return true; } -QString AbstractTranslateUnit::name() const +QString AbstractExtractor::name() const { return _name_store; } -int AbstractTranslateUnit::offsetFromPrevious() const +int AbstractExtractor::offsetFromPrevious() const { return _byte_offset; } -int AbstractTranslateUnit::countWithinParse() const +int AbstractExtractor::countWithinParse() const { return _byte_count; } -void AbstractTranslateUnit::loadFrom(const QJsonObject& obj) +void AbstractExtractor::loadFrom(const QJsonObject& obj) { INT32_PEAK(_byte_offset); INT32_PEAK(_byte_count); } -void AbstractTranslateUnit::saveTo(QJsonObject& obj) const +void AbstractExtractor::saveTo(QJsonObject& obj) const { INT32_SAVE(_byte_count); INT32_SAVE(_byte_offset); } BytesAsHex::BytesAsHex() - : AbstractTranslateUnit(NAME(BytesAsHex)) { + : AbstractExtractor(NAME(BytesAsHex)) { } QVariant BytesAsHex::parse(const QByteArray& bytes) const @@ -62,7 +62,7 @@ std::shared_ptr BytesAsHex::newDefault() const } BytesAsBitCombine::BytesAsBitCombine() - : AbstractTranslateUnit(NAME(BytesAsBitCombine)) + : AbstractExtractor(NAME(BytesAsBitCombine)) { } @@ -106,7 +106,7 @@ QVariant BytesAsBitCombine::parse(const QByteArray& bytes) const void BytesAsBitCombine::loadFrom(const QJsonObject& obj) { - AbstractTranslateUnit::loadFrom(obj); + AbstractExtractor::loadFrom(obj); QStringList value_list; STRLIST_PEAK(value_list); @@ -119,7 +119,7 @@ void BytesAsBitCombine::loadFrom(const QJsonObject& obj) void BytesAsBitCombine::saveTo(QJsonObject& obj) const { - AbstractTranslateUnit::saveTo(obj); + AbstractExtractor::saveTo(obj); QStringList value_list; for (auto key : _switch_options.keys()) { @@ -135,13 +135,13 @@ std::shared_ptr BytesAsBitCombine::newDefault() const void BytesAsInteger::loadFrom(const QJsonObject& obj) { - AbstractTranslateUnit::loadFrom(obj); + AbstractExtractor::loadFrom(obj); INT32_PEAK(unsigned_mark); } void BytesAsInteger::saveTo(QJsonObject& obj) const { - AbstractTranslateUnit::saveTo(obj); + AbstractExtractor::saveTo(obj); INT32_SAVE(unsigned_mark); } @@ -151,7 +151,7 @@ std::shared_ptr BytesAsInteger::newDefault() const } BytesAsInteger::BytesAsInteger() - :AbstractTranslateUnit(NAME(BytesAsInteger)) { + :AbstractExtractor(NAME(BytesAsInteger)) { setCountWithinParse(8); } @@ -168,7 +168,7 @@ bool BytesAsInteger::unsignedMark() const bool BytesAsInteger::setCountWithinParse(int bytes) { if (bytes >= 0 && bytes <= 8) - return AbstractTranslateUnit::setCountWithinParse(bytes); + return AbstractExtractor::setCountWithinParse(bytes); return false; } @@ -208,7 +208,7 @@ QVariant BytesAsInteger::parse(const QByteArray& bytes) const #include BytesAsString::BytesAsString() - :AbstractTranslateUnit(NAME(BytesAsString)) { + :AbstractExtractor(NAME(BytesAsString)) { _conv_with = QTextCodec::codecForName("GBK"); } @@ -229,7 +229,7 @@ QVariant BytesAsString::parse(const QByteArray& bytes) const void BytesAsString::loadFrom(const QJsonObject& obj) { - AbstractTranslateUnit::loadFrom(obj); + AbstractExtractor::loadFrom(obj); QString codec_name; STRING_PEAK(codec_name); @@ -238,7 +238,7 @@ void BytesAsString::loadFrom(const QJsonObject& obj) void BytesAsString::saveTo(QJsonObject& obj) const { - AbstractTranslateUnit::saveTo(obj); + AbstractExtractor::saveTo(obj); auto codec_name = this->codecName(); STRING_SAVE(codec_name); diff --git a/TranslateUI/TranslateBasic.h b/TranslateUI/TranslateBasic.h index d5929af..bbcfaf9 100644 --- a/TranslateUI/TranslateBasic.h +++ b/TranslateUI/TranslateBasic.h @@ -26,12 +26,24 @@ public: virtual std::shared_ptr newDefault() const = 0; }; + +/// +/// 内部使用的数据类型 +/// +enum class DataType { + ValueString, + TextString, + Int64, + Flt32, + Dbl64, +}; + /// /// 翻译单元抽象接口 /// -class TranslateUnit : public Serializable { +class ExtractUnit : public Serializable { public: - virtual ~TranslateUnit() = default; + virtual ~ExtractUnit() = default; /// /// 单元名称 @@ -58,13 +70,13 @@ public: virtual QVariant parse(const QByteArray& bytes) const = 0; }; -class AbstractTranslateUnit : public TranslateUnit { +class AbstractExtractor : public ExtractUnit { private: QString _name_store; int _byte_offset, _byte_count; public: - AbstractTranslateUnit(const QString& name); + AbstractExtractor(const QString& name); /// /// 设置偏移字节数量 /// @@ -76,7 +88,7 @@ public: /// virtual bool setCountWithinParse(int bytes); - // TranslateUnit =========================== + // ExtractUnit =========================== QString name() const override; int offsetFromPrevious() const override; int countWithinParse() const override; @@ -95,7 +107,7 @@ public: /// /// 转换源数值未16进制数值,默认分割方式 /// -class BytesAsHex : public AbstractTranslateUnit { +class BytesAsHex : public AbstractExtractor { public: BytesAsHex(); @@ -107,7 +119,7 @@ public: /// /// 转换源数值为位联合 /// -class BytesAsBitCombine : public AbstractTranslateUnit { +class BytesAsBitCombine : public AbstractExtractor { private: QHash _switch_options; @@ -118,7 +130,7 @@ public: QHash switchOptions() const; virtual void clearOptions(); - // TranslateUnit ============================ + // ExtractUnit ============================ QVariant parse(const QByteArray& bytes) const override; // Serializable ============================== @@ -130,7 +142,7 @@ public: /// /// 转换源数据为整形 /// -class BytesAsInteger : public AbstractTranslateUnit { +class BytesAsInteger : public AbstractExtractor { private: bool unsigned_mark = false; @@ -140,7 +152,7 @@ public: void setUnsignedMark(bool ste); bool unsignedMark() const; - // TranslateUnit ============================ + // ExtractUnit ============================ bool setCountWithinParse(int bytes) override; QVariant parse(const QByteArray& bytes) const override; @@ -155,7 +167,7 @@ public: /// /// 转换源数据为字符串 /// -class BytesAsString : public AbstractTranslateUnit { +class BytesAsString : public AbstractExtractor { private: QTextCodec* _conv_with = nullptr; @@ -165,7 +177,7 @@ public: void setStrCodec(QTextCodec* ins); QString codecName() const; - // TranslateUnit ============================ + // ExtractUnit ============================ QVariant parse(const QByteArray& bytes) const override; // Serializable ==============================