#pragma once
#include "extract_basic.h"
#include "convert_basic.h"
///
/// ·Òë³ÌÐòºËÐÄ
///
class TranslateBasic {
private:
QHash> _extractor_types;
std::shared_ptr _default_translate_rule = nullptr;
QHash> _size_provider_types;
std::shared_ptr _default_size_provider = nullptr;
QHash> _rule_match_types;
std::shared_ptr _default_rule_match = nullptr;
public:
TranslateBasic();
std::shared_ptr defaultSizeProvider() const;
QHash> sizeProviderList() const;
std::shared_ptr defaultRuleMatch() const;
QHash> ruleMatchList() const;
std::shared_ptr defaultExtractUnit() const;
QHash> extractUnitList() const;
};
class ConstNumberProvider : public SizeProvider {
public:
struct __Private {
QString _value_string;
} _number;
public:
QString name() const override;
int32_t value(const QString& expr) const override;
void setExpression(const QString& expr) override;
QString expression() const override;
void loadFrom(std::shared_ptr core, const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
std::shared_ptr newDefault() const override;
};