为集成化序列化和反序列话构建
This commit is contained in:
parent
0e68e0c66e
commit
33cb4a12b5
|
@ -66,7 +66,7 @@ void SequenceRulesView::peersRuleChanged(const QModelIndex& idx)
|
||||||
if (typeid(*new_inst.get()) == typeid(BytesAsList)) {
|
if (typeid(*new_inst.get()) == typeid(BytesAsList)) {
|
||||||
auto conv = std::dynamic_pointer_cast<BytesAsList>(new_inst);
|
auto conv = std::dynamic_pointer_cast<BytesAsList>(new_inst);
|
||||||
if (!conv->elementRule()) {
|
if (!conv->elementRule()) {
|
||||||
conv->setElementRule(this->base->defaultRule());
|
conv->appendElementRule(this->base->defaultRule());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!conv->sizeProvider()) {
|
if (!conv->sizeProvider()) {
|
||||||
|
@ -153,59 +153,6 @@ void SequenceRulesView::removeTranslateUnit()
|
||||||
_sequence_model->removeRow(idx_curr.row());
|
_sequence_model->removeRow(idx_curr.row());
|
||||||
}
|
}
|
||||||
|
|
||||||
TranslateBasic::TranslateBasic()
|
|
||||||
{
|
|
||||||
// extractor type-list
|
|
||||||
std::shared_ptr<ExtractUnit> u_ptr = std::make_shared<BytesAsBitCombine>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsInteger>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsUnsigned>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsString>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsHex>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
this->_default_translate_rule = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsFloat>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsDouble>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
u_ptr = std::make_shared<BytesAsList>();
|
|
||||||
_extractor_types[u_ptr->name()] = u_ptr;
|
|
||||||
|
|
||||||
// size-provider type-list
|
|
||||||
auto sz_ptr = std::make_shared<ConstNumberProvider>();
|
|
||||||
this->_default_size_provider = sz_ptr;
|
|
||||||
_size_provider_types[sz_ptr->name()] = sz_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<ExtractUnit> TranslateBasic::defaultRule() const
|
|
||||||
{
|
|
||||||
return _default_translate_rule;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<SizeProvider> TranslateBasic::defaultSizeProvider() const
|
|
||||||
{
|
|
||||||
return _default_size_provider;
|
|
||||||
}
|
|
||||||
|
|
||||||
QHash<QString, std::shared_ptr<ExtractUnit>> TranslateBasic::extactors() const
|
|
||||||
{
|
|
||||||
return _extractor_types;
|
|
||||||
}
|
|
||||||
|
|
||||||
QHash<QString, std::shared_ptr<SizeProvider>> TranslateBasic::sizeProviders() const
|
|
||||||
{
|
|
||||||
return _size_provider_types;
|
|
||||||
}
|
|
||||||
|
|
||||||
RuleSelectDelegate::RuleSelectDelegate(std::shared_ptr<TranslateBasic> ins)
|
RuleSelectDelegate::RuleSelectDelegate(std::shared_ptr<TranslateBasic> ins)
|
||||||
:_kernel(ins) {
|
:_kernel(ins) {
|
||||||
|
@ -239,23 +186,3 @@ void RuleSelectDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptio
|
||||||
{
|
{
|
||||||
editor->setGeometry(option.rect);
|
editor->setGeometry(option.rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ConstNumberProvider::name() const
|
|
||||||
{
|
|
||||||
return NAME(ConstNumberProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t ConstNumberProvider::value(const QString& expr) const
|
|
||||||
{
|
|
||||||
return expr.toInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstNumberProvider::setExpression(const QString& expr)
|
|
||||||
{
|
|
||||||
this->_number_value = expr;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ConstNumberProvider::expression() const
|
|
||||||
{
|
|
||||||
return this->_number_value;
|
|
||||||
}
|
|
||||||
|
|
|
@ -52,18 +52,6 @@ public:
|
||||||
virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ConstNumberProvider : public SizeProvider {
|
|
||||||
private:
|
|
||||||
QString _number_value;
|
|
||||||
|
|
||||||
public:
|
|
||||||
QString name() const override;
|
|
||||||
|
|
||||||
int32_t value(const QString& expr) const override;
|
|
||||||
void setExpression(const QString &expr) override;
|
|
||||||
QString expression() const override;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ÐòÁл¯¹æÔòÊÓͼ
|
/// ÐòÁл¯¹æÔòÊÓͼ
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1 +1,78 @@
|
||||||
#include "TranslateBasic.h"
|
#include "TranslateBasic.h"
|
||||||
|
|
||||||
|
using namespace extract;
|
||||||
|
|
||||||
|
|
||||||
|
TranslateBasic::TranslateBasic()
|
||||||
|
{
|
||||||
|
// extractor type-list
|
||||||
|
std::shared_ptr<ExtractUnit> u_ptr = std::make_shared<BytesAsBitCombine>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsInteger>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsUnsigned>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsString>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsHex>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
this->_default_translate_rule = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsFloat>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsDouble>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
u_ptr = std::make_shared<BytesAsList>();
|
||||||
|
_extractor_types[u_ptr->name()] = u_ptr;
|
||||||
|
|
||||||
|
// size-provider type-list
|
||||||
|
auto sz_ptr = std::make_shared<ConstNumberProvider>();
|
||||||
|
this->_default_size_provider = sz_ptr;
|
||||||
|
_size_provider_types[sz_ptr->name()] = sz_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<ExtractUnit> TranslateBasic::defaultRule() const
|
||||||
|
{
|
||||||
|
return _default_translate_rule;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<SizeProvider> TranslateBasic::defaultSizeProvider() const
|
||||||
|
{
|
||||||
|
return _default_size_provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<QString, std::shared_ptr<ExtractUnit>> TranslateBasic::extactors() const
|
||||||
|
{
|
||||||
|
return _extractor_types;
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<QString, std::shared_ptr<SizeProvider>> TranslateBasic::sizeProviders() const
|
||||||
|
{
|
||||||
|
return _size_provider_types;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ConstNumberProvider::name() const
|
||||||
|
{
|
||||||
|
return NAME(ConstNumberProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t ConstNumberProvider::value(const QString& expr) const
|
||||||
|
{
|
||||||
|
return expr.toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConstNumberProvider::setExpression(const QString& expr)
|
||||||
|
{
|
||||||
|
this->_number_value = expr;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ConstNumberProvider::expression() const
|
||||||
|
{
|
||||||
|
return this->_number_value;
|
||||||
|
}
|
||||||
|
|
|
@ -22,3 +22,15 @@ public:
|
||||||
QHash<QString, std::shared_ptr<ExtractUnit>> extactors() const;
|
QHash<QString, std::shared_ptr<ExtractUnit>> extactors() const;
|
||||||
QHash<QString, std::shared_ptr<SizeProvider>> sizeProviders() const;
|
QHash<QString, std::shared_ptr<SizeProvider>> sizeProviders() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ConstNumberProvider : public SizeProvider {
|
||||||
|
private:
|
||||||
|
QString _number_value;
|
||||||
|
|
||||||
|
public:
|
||||||
|
QString name() const override;
|
||||||
|
|
||||||
|
int32_t value(const QString& expr) const override;
|
||||||
|
void setExpression(const QString& expr) override;
|
||||||
|
QString expression() const override;
|
||||||
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#define STRING_PEAK(codec_name) codec_name = obj[NAME(codec_name)].toString();
|
#define STRING_PEAK(codec_name) codec_name = obj[NAME(codec_name)].toString();
|
||||||
#define STRING_SAVE(codec_name) obj[NAME(codec_name)] = codec_name;
|
#define STRING_SAVE(codec_name) obj[NAME(codec_name)] = codec_name;
|
||||||
|
|
||||||
|
class TranslateBasic;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 序列化实体
|
/// 序列化实体
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -21,7 +22,7 @@ public:
|
||||||
/// 反序列化
|
/// 反序列化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="obj"></param>
|
/// <param name="obj"></param>
|
||||||
virtual void loadFrom(const QJsonObject& obj) = 0;
|
virtual void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 序列化
|
/// 序列化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -24,7 +24,7 @@ DataType AbstractValueConvert::outType() const
|
||||||
return _out_type;
|
return _out_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractValueConvert::loadFrom(const QJsonObject& obj)
|
void AbstractValueConvert::loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
|
||||||
{
|
{
|
||||||
auto int_in_type = (int)_in_type;
|
auto int_in_type = (int)_in_type;
|
||||||
INT32_PEAK(int_in_type);
|
INT32_PEAK(int_in_type);
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace convert {
|
||||||
DataType inType() const override;
|
DataType inType() const override;
|
||||||
DataType outType() const override;
|
DataType outType() const override;
|
||||||
|
|
||||||
void loadFrom(const QJsonObject& obj) override;
|
void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) override;
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,8 @@ int AbstractExtractor::countWithin() const
|
||||||
return this->_abs_data.byte_count;
|
return this->_abs_data.byte_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractExtractor::loadFrom(const QJsonObject& obj)
|
void AbstractExtractor::loadFrom(
|
||||||
|
std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
|
||||||
{
|
{
|
||||||
INT32_PEAK(_abs_data.byte_offset);
|
INT32_PEAK(_abs_data.byte_offset);
|
||||||
INT32_PEAK(_abs_data.byte_count);
|
INT32_PEAK(_abs_data.byte_count);
|
||||||
|
@ -82,7 +83,7 @@ BytesAsBitCombine::BytesAsBitCombine()
|
||||||
bool BytesAsBitCombine::setSwitchOption(int bit_index, const QString& keyword)
|
bool BytesAsBitCombine::setSwitchOption(int bit_index, const QString& keyword)
|
||||||
{
|
{
|
||||||
if (bit_index >= 0 && bit_index <= this->countWithin() * 8) {
|
if (bit_index >= 0 && bit_index <= this->countWithin() * 8) {
|
||||||
_combines._switch_options[bit_index] = keyword;
|
_combine._switch_options[bit_index] = keyword;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -90,17 +91,17 @@ bool BytesAsBitCombine::setSwitchOption(int bit_index, const QString& keyword)
|
||||||
|
|
||||||
QHash<int, QString> BytesAsBitCombine::switchOptions() const
|
QHash<int, QString> BytesAsBitCombine::switchOptions() const
|
||||||
{
|
{
|
||||||
return _combines._switch_options;
|
return _combine._switch_options;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsBitCombine::clearOptions()
|
void BytesAsBitCombine::clearOptions()
|
||||||
{
|
{
|
||||||
_combines._switch_options.clear();
|
_combine._switch_options.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant BytesAsBitCombine::parse(const QByteArray& bytes) const
|
QVariant BytesAsBitCombine::parse(const QByteArray& bytes) const
|
||||||
{
|
{
|
||||||
auto keys = _combines._switch_options.keys();
|
auto keys = _combine._switch_options.keys();
|
||||||
std::sort(keys.begin(), keys.end());
|
std::sort(keys.begin(), keys.end());
|
||||||
|
|
||||||
QString result;
|
QString result;
|
||||||
|
@ -109,23 +110,24 @@ QVariant BytesAsBitCombine::parse(const QByteArray& bytes) const
|
||||||
auto bit_idx = idx % 8;
|
auto bit_idx = idx % 8;
|
||||||
auto char_v = bytes.at(byte_idx);
|
auto char_v = bytes.at(byte_idx);
|
||||||
if (char_v & (0x1u << bit_idx))
|
if (char_v & (0x1u << bit_idx))
|
||||||
result += QString("%1<%2>;").arg(_combines._switch_options[idx], "Y");
|
result += QString("%1<%2>;").arg(_combine._switch_options[idx], "Y");
|
||||||
else
|
else
|
||||||
result += QString("%1<%2>;").arg(_combines._switch_options[idx], "N");
|
result += QString("%1<%2>;").arg(_combine._switch_options[idx], "N");
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsBitCombine::loadFrom(const QJsonObject& obj)
|
void BytesAsBitCombine::loadFrom(
|
||||||
|
std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
|
||||||
{
|
{
|
||||||
AbstractExtractor::loadFrom(obj);
|
AbstractExtractor::loadFrom(core, obj);
|
||||||
|
|
||||||
QStringList value_list;
|
QStringList value_list;
|
||||||
STRLIST_PEAK(value_list);
|
STRLIST_PEAK(value_list);
|
||||||
_combines._switch_options.clear();
|
_combine._switch_options.clear();
|
||||||
for (auto pair : value_list) {
|
for (auto pair : value_list) {
|
||||||
auto items = pair.split("=");
|
auto items = pair.split("=");
|
||||||
_combines._switch_options[items.first().toInt()] = items.last();
|
_combine._switch_options[items.first().toInt()] = items.last();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,9 +136,9 @@ void BytesAsBitCombine::saveTo(QJsonObject& obj) const
|
||||||
AbstractExtractor::saveTo(obj);
|
AbstractExtractor::saveTo(obj);
|
||||||
|
|
||||||
QStringList value_list;
|
QStringList value_list;
|
||||||
for (auto key : _combines._switch_options.keys()) {
|
for (auto key : _combine._switch_options.keys()) {
|
||||||
auto pair_str = QString("%1=%2").arg(key)
|
auto pair_str = QString("%1=%2").arg(key)
|
||||||
.arg(_combines._switch_options[key]);
|
.arg(_combine._switch_options[key]);
|
||||||
value_list << pair_str;
|
value_list << pair_str;
|
||||||
}
|
}
|
||||||
STRLIST_SAVE(value_list);
|
STRLIST_SAVE(value_list);
|
||||||
|
@ -207,9 +209,9 @@ QVariant BytesAsString::parse(const QByteArray& bytes) const
|
||||||
return _strings._conv_with->toUnicode(bytes);
|
return _strings._conv_with->toUnicode(bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsString::loadFrom(const QJsonObject& obj)
|
void BytesAsString::loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
|
||||||
{
|
{
|
||||||
AbstractExtractor::loadFrom(obj);
|
AbstractExtractor::loadFrom(core, obj);
|
||||||
|
|
||||||
QString codec_name;
|
QString codec_name;
|
||||||
STRING_PEAK(codec_name);
|
STRING_PEAK(codec_name);
|
||||||
|
@ -302,7 +304,7 @@ std::shared_ptr<ExtractUnit> BytesAsList::elementRule() const
|
||||||
return this->_list._bind_unit;
|
return this->_list._bind_unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BytesAsList::setElementRule(std::shared_ptr<ExtractUnit> u)
|
bool BytesAsList::appendElementRule(std::shared_ptr<ExtractUnit> u)
|
||||||
{
|
{
|
||||||
this->_list._bind_unit = u;
|
this->_list._bind_unit = u;
|
||||||
return true;
|
return true;
|
||||||
|
@ -345,25 +347,32 @@ int BytesAsList::countWithin() const
|
||||||
* this->_list._bind_unit->countWithin();
|
* this->_list._bind_unit->countWithin();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsList::loadFrom(const QJsonObject& obj)
|
#include "TranslateBasic.h"
|
||||||
|
void BytesAsList::loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
|
||||||
{
|
{
|
||||||
INT32_PEAK(_list._bytes_offset);
|
INT32_PEAK(_list._bytes_offset);
|
||||||
|
|
||||||
|
QString bind_unit_name = "";
|
||||||
|
QString bind_size_provider_name = "";
|
||||||
|
STRING_PEAK(bind_unit_name);
|
||||||
|
STRING_PEAK(bind_size_provider_name);
|
||||||
|
this->_list._bind_size_v = core->sizeProviders()[bind_size_provider_name];
|
||||||
|
this->_list._bind_unit = core->extactors()[bind_unit_name];
|
||||||
|
|
||||||
QString bind_provider_expr = "";
|
QString bind_provider_expr = "";
|
||||||
STRING_SAVE(bind_provider_expr);
|
STRING_SAVE(bind_provider_expr);
|
||||||
if (this->_list._bind_size_v)
|
this->_list._bind_size_v->setExpression(bind_provider_expr);
|
||||||
this->_list._bind_size_v->setExpression(bind_provider_expr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsList::saveTo(QJsonObject& obj) const
|
void BytesAsList::saveTo(QJsonObject& obj) const
|
||||||
{
|
{
|
||||||
|
INT32_SAVE(_list._bytes_offset);
|
||||||
|
|
||||||
QString bind_unit_name = "";
|
QString bind_unit_name = "";
|
||||||
if (this->_list._bind_unit)
|
if (this->_list._bind_unit)
|
||||||
bind_unit_name = this->_list._bind_unit->name();
|
bind_unit_name = this->_list._bind_unit->name();
|
||||||
STRING_SAVE(bind_unit_name);
|
STRING_SAVE(bind_unit_name);
|
||||||
|
|
||||||
INT32_SAVE(_list._bytes_offset);
|
|
||||||
|
|
||||||
QString bind_size_provider_name = "";
|
QString bind_size_provider_name = "";
|
||||||
QString bind_provider_expr = "";
|
QString bind_provider_expr = "";
|
||||||
if (this->_list._bind_size_v) {
|
if (this->_list._bind_size_v) {
|
||||||
|
@ -425,9 +434,11 @@ QVariant BytesAsUnion::parse(const QByteArray& bytes) const
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsUnion::loadFrom(const QJsonObject& obj)
|
void BytesAsUnion::loadFrom(
|
||||||
|
std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
|
||||||
{
|
{
|
||||||
throw std::logic_error("The method or operation is not implemented.");
|
INT32_PEAK(_union.byte_count);
|
||||||
|
INT32_PEAK(_union.byte_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BytesAsUnion::saveTo(QJsonObject& obj) const
|
void BytesAsUnion::saveTo(QJsonObject& obj) const
|
||||||
|
@ -446,7 +457,7 @@ QList<std::shared_ptr<RuleMatch>> BytesAsUnion::elementRules() const
|
||||||
return _union._rule_list;
|
return _union._rule_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BytesAsUnion::setElementRule(std::shared_ptr<RuleMatch> u)
|
bool BytesAsUnion::appendElementRule(std::shared_ptr<RuleMatch> u)
|
||||||
{
|
{
|
||||||
this->_union._rule_list << u;
|
this->_union._rule_list << u;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -96,7 +96,7 @@ namespace extract {
|
||||||
int countWithin() const override;
|
int countWithin() const override;
|
||||||
|
|
||||||
// Serializable ==============================
|
// Serializable ==============================
|
||||||
void loadFrom(const QJsonObject& obj) override;
|
void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) override;
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ namespace extract {
|
||||||
public:
|
public:
|
||||||
struct __Private {
|
struct __Private {
|
||||||
QHash<int, QString> _switch_options;
|
QHash<int, QString> _switch_options;
|
||||||
} _combines;
|
} _combine;
|
||||||
|
|
||||||
BytesAsBitCombine();
|
BytesAsBitCombine();
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ namespace extract {
|
||||||
QVariant parse(const QByteArray& bytes) const override;
|
QVariant parse(const QByteArray& bytes) const override;
|
||||||
|
|
||||||
// Serializable ==============================
|
// Serializable ==============================
|
||||||
void loadFrom(const QJsonObject& obj) override;
|
void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) override;
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
std::shared_ptr<Serializable> newDefault() const override;
|
std::shared_ptr<Serializable> newDefault() const override;
|
||||||
};
|
};
|
||||||
|
@ -184,7 +184,7 @@ namespace extract {
|
||||||
QVariant parse(const QByteArray& bytes) const override;
|
QVariant parse(const QByteArray& bytes) const override;
|
||||||
|
|
||||||
// Serializable ==============================
|
// Serializable ==============================
|
||||||
void loadFrom(const QJsonObject& obj) override;
|
void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) override;
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
std::shared_ptr<Serializable> newDefault() const override;
|
std::shared_ptr<Serializable> newDefault() const override;
|
||||||
};
|
};
|
||||||
|
@ -217,7 +217,7 @@ namespace extract {
|
||||||
public:
|
public:
|
||||||
bool setOffsetSpan(int value);
|
bool setOffsetSpan(int value);
|
||||||
std::shared_ptr<ExtractUnit> elementRule() const;
|
std::shared_ptr<ExtractUnit> elementRule() const;
|
||||||
bool setElementRule(std::shared_ptr<ExtractUnit> u);
|
bool appendElementRule(std::shared_ptr<ExtractUnit> u);
|
||||||
std::shared_ptr<SizeProvider> sizeProvider() const;
|
std::shared_ptr<SizeProvider> sizeProvider() const;
|
||||||
bool setSizeProvider(std::shared_ptr<SizeProvider> ins);
|
bool setSizeProvider(std::shared_ptr<SizeProvider> ins);
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ namespace extract {
|
||||||
int offsetSpan() const override;
|
int offsetSpan() const override;
|
||||||
int countWithin() const override;
|
int countWithin() const override;
|
||||||
|
|
||||||
void loadFrom(const QJsonObject& obj) override;
|
void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) override;
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
|
|
||||||
QVariant parse(const QByteArray& bytes) const override;
|
QVariant parse(const QByteArray& bytes) const override;
|
||||||
|
@ -238,7 +238,7 @@ namespace extract {
|
||||||
class BytesAsUnion : public ExtractUnit {
|
class BytesAsUnion : public ExtractUnit {
|
||||||
public:
|
public:
|
||||||
struct __Private {
|
struct __Private {
|
||||||
int byte_offset, byte_count;
|
int byte_offset = 0, byte_count = 1;
|
||||||
QList<std::shared_ptr<RuleMatch>> _rule_list;
|
QList<std::shared_ptr<RuleMatch>> _rule_list;
|
||||||
} _union;
|
} _union;
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ namespace extract {
|
||||||
|
|
||||||
void clearRules();
|
void clearRules();
|
||||||
QList<std::shared_ptr<RuleMatch>> elementRules() const;
|
QList<std::shared_ptr<RuleMatch>> elementRules() const;
|
||||||
bool setElementRule(std::shared_ptr<RuleMatch> u);
|
bool appendElementRule(std::shared_ptr<RuleMatch> u);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QString name() const override;
|
QString name() const override;
|
||||||
|
@ -257,11 +257,10 @@ namespace extract {
|
||||||
int countWithin() const override;
|
int countWithin() const override;
|
||||||
|
|
||||||
QVariant parse(const QByteArray& bytes) const override;
|
QVariant parse(const QByteArray& bytes) const override;
|
||||||
void loadFrom(const QJsonObject& obj) override;
|
void loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj) override;
|
||||||
|
|
||||||
void saveTo(QJsonObject& obj) const override;
|
void saveTo(QJsonObject& obj) const override;
|
||||||
std::shared_ptr<Serializable> newDefault() const override;
|
|
||||||
|
|
||||||
|
std::shared_ptr<Serializable> newDefault() const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue