diff options
| author | 2020-09-27 13:02:59 +0200 | |
|---|---|---|
| committer | 2020-09-27 13:04:58 +0200 | |
| commit | edc3ba1a56fce36c47128cb6e399608ffdafaf04 (patch) | |
| tree | d97369ac3f3676c35405b6d4cfe5678aa6015a0b /compositevalidator.cpp | |
| parent | f21d85618079a21f9c30d5397e16a7f837819457 (diff) | |
| download | OneRoll-edc3ba1a56fce36c47128cb6e399608ffdafaf04.tar.gz OneRoll-edc3ba1a56fce36c47128cb6e399608ffdafaf04.zip | |
clean up diceparser code.
Cli build is piloted from an cmake option.
Diffstat (limited to 'compositevalidator.cpp')
| -rw-r--r-- | compositevalidator.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/compositevalidator.cpp b/compositevalidator.cpp index 4b7b11c..b0f127d 100644 --- a/compositevalidator.cpp +++ b/compositevalidator.cpp @@ -21,6 +21,8 @@ ***************************************************************************/ #include "compositevalidator.h" +#include <map> + CompositeValidator::CompositeValidator() {} CompositeValidator::~CompositeValidator() @@ -73,27 +75,29 @@ qint64 CompositeValidator::hasValid(Die* b, bool recursive, bool unhighlight) co QString CompositeValidator::toString() { - QString str= ""; - /*switch (m_operator) + // m_validatorList + QStringList validatorsTextList; + std::transform(m_validatorList.begin(), m_validatorList.end(), std::back_inserter(validatorsTextList), + [](Validator* validator) { return validator->toString(); }); + QStringList operatorTextList; + std::transform( + m_operators.begin(), m_operators.end(), std::back_inserter(operatorTextList), [](LogicOperation validator) { + static std::map<LogicOperation, QString> map({{OR, "|"}, {EXCLUSIVE_OR, "^"}, {AND, "&"}, {NONE, ""}}); + return map[validator]; + }); + + if(validatorsTextList.size() - 1 != operatorTextList.size()) + return QString("Error - operator and validator count don't fit"); + + QStringList result; + int i= 0; + for(auto text : validatorsTextList) { - case Equal: - str.append("="); - break; - case GreaterThan: - str.append(">"); - break; - case LesserThan: - str.append("<"); - break; - case GreaterOrEqual: - str.append(">="); - break; - case LesserOrEqual: - str.append("<="); - break; + result << text << operatorTextList[i]; + + ++i; } - return QString("[%1%2]").arg(str).arg(m_value);*/ - return str; + return result.join(" "); } Dice::CONDITION_STATE testAND(Dice::CONDITION_STATE before, Dice::CONDITION_STATE current) @@ -144,7 +148,7 @@ Dice::CONDITION_STATE CompositeValidator::isValidRangeSize(const std::pair<qint6 } std::size_t i= 0; - Dice::CONDITION_STATE val = Dice::CONDITION_STATE::ERROR_STATE; + Dice::CONDITION_STATE val= Dice::CONDITION_STATE::ERROR_STATE; for(const auto& op : m_operators) { auto currentState= vec[i + 1]; |