aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/booleancondition.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2018-08-27 01:03:08 +0200
committerRenaud G <renaud@rolisteam.org>2018-08-27 01:03:08 +0200
commit64e9988ba715e6e196b84e4a69c871c761562bbd (patch)
tree4159ff6831ac34c01069604bebf6b99aad99954a /booleancondition.cpp
parent45d618b710483ee1ae42cbdfcaa0406f1132f384 (diff)
downloadOneRoll-64e9988ba715e6e196b84e4a69c871c761562bbd.tar.gz
OneRoll-64e9988ba715e6e196b84e4a69c871c761562bbd.zip
-New API for validating validor.
Prevent endless loop in R operator.
Diffstat (limited to 'booleancondition.cpp')
-rw-r--r--booleancondition.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/booleancondition.cpp b/booleancondition.cpp
index 18e4305..8781039 100644
--- a/booleancondition.cpp
+++ b/booleancondition.cpp
@@ -119,24 +119,33 @@ QString BooleanCondition::toString()
}
return QStringLiteral("[%1%2]").arg(str).arg(valueToScalar());
}
-quint64 BooleanCondition::getValidRangeSize(quint64 faces) const
+bool BooleanCondition::isValidRangeSize(std::pair<qint64, qint64> range) const
{
+ bool isValid = false;
+ auto valueScalar = valueToScalar();
+ qint64 boundValue = qBound(range.first,valueScalar,range.second);
switch(m_operator)
{
case Equal:
- return 1;
+ isValid = (boundValue == valueScalar);
+ break;
case GreaterThan:
- return faces - valueToScalar();
+ isValid = range.first<=valueScalar;
+ break;
case LesserThan:
- return valueToScalar() - 1;
+ isValid = range.second>=valueScalar;
+ break;
case GreaterOrEqual:
- return faces - (valueToScalar() - 1);
+ isValid = range.first<valueScalar;
+ break;
case LesserOrEqual:
- return valueToScalar();
+ isValid = range.second>valueScalar;
+ break;
case Different:
- return faces - 1;
+ isValid = (boundValue == valueScalar);
+ break;
}
- return 0;
+ return isValid;
}
Validator* BooleanCondition::getCopy() const
{