104 lines
2.4 KiB
C++
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>();
|
|
}
|