QBinaryTranslate/TranslateUI/TranslateBasic.cpp

79 lines
1.8 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::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;
}