QBinaryTranslate/TranslateUI/TranslateBasic.cpp

104 lines
2.4 KiB
C++

#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::defaultExtractUnit() const
{
return _default_translate_rule;
}
std::shared_ptr<SizeProvider> TranslateBasic::defaultSizeProvider() const
{
return _default_size_provider;
}
std::shared_ptr<RuleMatch> TranslateBasic::defaultRuleMatch() const
{
return _default_rule_match;
}
QHash<QString, std::shared_ptr<ExtractUnit>> TranslateBasic::extractUnitList() const
{
return _extractor_types;
}
QHash<QString, std::shared_ptr<SizeProvider>> TranslateBasic::sizeProviderList() const
{
return _size_provider_types;
}
QHash<QString, std::shared_ptr<RuleMatch>> TranslateBasic::ruleMatchList() const
{
return _rule_match_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_string = expr;
}
QString ConstNumberProvider::expression() const
{
return this->_number._value_string;
}
void ConstNumberProvider::loadFrom(std::shared_ptr<TranslateBasic> core, const QJsonObject& obj)
{
STRING_PEAK(_number._value_string, obj);
}
void ConstNumberProvider::saveTo(QJsonObject& obj) const
{
STRING_SAVE(_number._value_string, obj);
}
std::shared_ptr<Serializable> ConstNumberProvider::newDefault() const
{
return std::make_shared<ConstNumberProvider>();
}