diff options
| author | 2018-08-27 01:03:08 +0200 | |
|---|---|---|
| committer | 2018-08-27 01:03:08 +0200 | |
| commit | 64e9988ba715e6e196b84e4a69c871c761562bbd (patch) | |
| tree | 4159ff6831ac34c01069604bebf6b99aad99954a /booleancondition.cpp | |
| parent | 45d618b710483ee1ae42cbdfcaa0406f1132f384 (diff) | |
| download | OneRoll-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.cpp | 25 |
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 { |