aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/compositevalidator.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2020-09-27 13:02:59 +0200
committerRenaud G <renaud@rolisteam.org>2020-09-27 13:04:58 +0200
commitedc3ba1a56fce36c47128cb6e399608ffdafaf04 (patch)
treed97369ac3f3676c35405b6d4cfe5678aa6015a0b /compositevalidator.cpp
parentf21d85618079a21f9c30d5397e16a7f837819457 (diff)
downloadOneRoll-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.cpp44
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];