From d7a4088caa0696af50484d05f34a67e5c8100229 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 29 May 2017 15:10:54 +0200 Subject: [PATCH] COMP: explicit handling of fallthrough cases --- src/OSspecific/POSIX/POSIX.C | 2 +- .../interpolation2DTable.C | 39 +++++++------ .../interpolation2DTable.H | 4 +- .../interpolationTable/interpolationTable.C | 56 +++++++++++-------- .../functions/Function1/Table/TableBase.C | 44 ++++++++++----- 5 files changed, 88 insertions(+), 57 deletions(-) diff --git a/src/OSspecific/POSIX/POSIX.C b/src/OSspecific/POSIX/POSIX.C index f4cad0fccb8..8f6c26fbbec 100644 --- a/src/OSspecific/POSIX/POSIX.C +++ b/src/OSspecific/POSIX/POSIX.C @@ -943,7 +943,7 @@ bool Foam::mvBak(const fileName& src, const std::string& ext) } } - // fall-through: nothing to do + // fallthrough: nothing to do return false; } diff --git a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C index 73ca0d9ec44..01c0aaa9590 100644 --- a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C +++ b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C @@ -123,10 +123,10 @@ Type Foam::interpolation2DTable<Type>::interpolateValue const scalar lookupValue ) const { - label n = data.size(); + const label n = data.size(); - scalar minLimit = data.first().first(); - scalar maxLimit = data.last().first(); + const scalar minLimit = data.first().first(); + const scalar maxLimit = data.last().first(); if (lookupValue < minLimit) { @@ -147,7 +147,9 @@ Type Foam::interpolation2DTable<Type>::interpolateValue << "bound (" << minLimit << ")" << nl << " Continuing with the first entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return data.first().second(); + break; } case interpolation2DTable::CLAMP: { @@ -175,7 +177,9 @@ Type Foam::interpolation2DTable<Type>::interpolateValue << "bound (" << maxLimit << ")" << nl << " Continuing with the last entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return data.last().second(); + break; } case interpolation2DTable::CLAMP: { @@ -251,16 +255,19 @@ Foam::label Foam::interpolation2DTable<Type>::Xi WarningInFunction << "value (" << valueX << ") out of bounds" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return limitI; + break; } case interpolation2DTable::CLAMP: { return limitI; + break; } default: { FatalErrorInFunction - << "Un-handled enumeration " << boundsHandling_ + << "Unhandled enumeration " << boundsHandling_ << abort(FatalError); } } @@ -299,7 +306,7 @@ Type Foam::interpolation2DTable<Type>::operator() ) const { // Considers all of the list in Y being equal - label nX = this->size(); + const label nX = this->size(); const table& t = *this; @@ -320,8 +327,8 @@ Type Foam::interpolation2DTable<Type>::operator() // have 2-D data, interpolate // find low and high indices in the X range that bound valueX - label x0i = Xi(lessOp<scalar>(), valueX, false); - label x1i = Xi(greaterOp<scalar>(), valueX, true); + const label x0i = Xi(lessOp<scalar>(), valueX, false); + const label x1i = Xi(greaterOp<scalar>(), valueX, true); if (x0i == x1i) { @@ -333,8 +340,8 @@ Type Foam::interpolation2DTable<Type>::operator() Type y1(interpolateValue(t[x1i].second(), valueY)); // gradient in X - scalar x0 = t[x0i].first(); - scalar x1 = t[x1i].first(); + const scalar x0 = t[x0i].first(); + const scalar x1 = t[x1i].first(); Type mX = (y1 - y0)/(x1 - x0); // interpolate @@ -420,7 +427,7 @@ Foam::interpolation2DTable<Type>::outOfBounds template<class Type> void Foam::interpolation2DTable<Type>::checkOrder() const { - label n = this->size(); + const label n = this->size(); const table& t = *this; scalar prevValue = t[0].first(); @@ -445,10 +452,8 @@ void Foam::interpolation2DTable<Type>::checkOrder() const template<class Type> void Foam::interpolation2DTable<Type>::write(Ostream& os) const { - os.writeKeyword("file") - << fileName_ << token::END_STATEMENT << nl; - os.writeKeyword("outOfBounds") - << boundsHandlingToWord(boundsHandling_) << token::END_STATEMENT << nl; + os.writeEntry("file", fileName_); + os.writeEntry("outOfBounds", boundsHandlingToWord(boundsHandling_)); os << *this; } diff --git a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H index 9a3750385c4..e38b0a979a4 100644 --- a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H +++ b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H @@ -66,7 +66,7 @@ public: CLAMP //!< Clamp value to the start/end value }; - //- Cconvenience typedef + //- Convenience typedef typedef List<Tuple2<scalar, List<Tuple2<scalar, Type>>>> table; @@ -156,7 +156,7 @@ public: const List<Tuple2<scalar, Type>>& operator[](const label) const; //- Return an interpolated value - Type operator()(const scalar, const scalar) const; + Type operator()(const scalar valueX, const scalar valueY) const; }; diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C index 6d71af14030..695e13dca46 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C +++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C @@ -205,8 +205,8 @@ Foam::interpolationTable<Type>::outOfBounds template<class Type> void Foam::interpolationTable<Type>::check() const { - label n = this->size(); - scalar prevValue = List<Tuple2<scalar, Type>>::operator[](0).first(); + const label n = this->size(); + scalar prevValue = this->first().first(); for (label i=1; i<n; ++i) { @@ -229,10 +229,8 @@ void Foam::interpolationTable<Type>::check() const template<class Type> void Foam::interpolationTable<Type>::write(Ostream& os) const { - os.writeKeyword("file") - << fileName_ << token::END_STATEMENT << nl; - os.writeKeyword("outOfBounds") - << boundsHandlingToWord(boundsHandling_) << token::END_STATEMENT << nl; + os.writeEntry("file", fileName_); + os.writeEntry("outOfBounds", boundsHandlingToWord(boundsHandling_)); if (reader_.valid()) { reader_->write(os); @@ -251,8 +249,8 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const return 0; } - scalar minLimit = List<Tuple2<scalar, Type>>::operator[](0).first(); - scalar maxLimit = List<Tuple2<scalar, Type>>::operator[](n-1).first(); + const scalar minLimit = this->first().first(); + const scalar maxLimit = this->last().first(); scalar lookupValue = value; if (lookupValue < minLimit) @@ -272,7 +270,9 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const << "value (" << lookupValue << ") underflow" << nl << " Zero rate of change." << endl; - // fall-through to 'CLAMP' + // behaviour as per 'CLAMP' + return 0; + break; } case interpolationTable::CLAMP: { @@ -305,7 +305,9 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const << "value (" << lookupValue << ") overflow" << nl << " Zero rate of change." << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return 0; + break; } case interpolationTable::CLAMP: { @@ -346,7 +348,7 @@ Type Foam::interpolationTable<Type>::rateOfChange(const scalar value) const } else if (hi == 0) { - // this treatment should should only occur under these conditions: + // this treatment should only occur under these conditions: // -> the 'REPEAT' treatment // -> (0 <= value <= minLimit) // -> minLimit > 0 @@ -414,7 +416,9 @@ Foam::interpolationTable<Type>::operator[](const label i) const << "index (" << ii << ") underflow" << nl << " Continuing with the first entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + ii = 0; + break; } case interpolationTable::CLAMP: { @@ -448,7 +452,9 @@ Foam::interpolationTable<Type>::operator[](const label i) const << "index (" << ii << ") overflow" << nl << " Continuing with the last entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + ii = n - 1; + break; } case interpolationTable::CLAMP: { @@ -477,11 +483,11 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const if (n <= 1) { - return List<Tuple2<scalar, Type>>::operator[](0).second(); + return this->first().second(); } - scalar minLimit = List<Tuple2<scalar, Type>>::operator[](0).first(); - scalar maxLimit = List<Tuple2<scalar, Type>>::operator[](n-1).first(); + const scalar minLimit = this->first().first(); + const scalar maxLimit = this->last().first(); scalar lookupValue = value; if (lookupValue < minLimit) @@ -501,17 +507,19 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const << "value (" << lookupValue << ") underflow" << nl << " Continuing with the first entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return this->first().second(); + break; } case interpolationTable::CLAMP: { - return List<Tuple2<scalar, Type>>::operator[](0).second(); + return this->first().second(); break; } case interpolationTable::REPEAT: { // adjust lookupValue to >= minLimit - scalar span = maxLimit-minLimit; + const scalar span = maxLimit-minLimit; lookupValue = fmod(lookupValue-minLimit, span) + minLimit; break; } @@ -534,17 +542,19 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const << "value (" << lookupValue << ") overflow" << nl << " Continuing with the last entry" << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + return this->last().second(); + break; } case interpolationTable::CLAMP: { - return List<Tuple2<scalar, Type>>::operator[](n-1).second(); + return this->last().second(); break; } case interpolationTable::REPEAT: { // adjust lookupValue <= maxLimit - scalar span = maxLimit-minLimit; + const scalar span = maxLimit-minLimit; lookupValue = fmod(lookupValue-minLimit, span) + minLimit; break; } @@ -575,7 +585,7 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const } else if (hi == 0) { - // this treatment should should only occur under these conditions: + // this treatment should only occur under these conditions: // -> the 'REPEAT' treatment // -> (0 <= value <= minLimit) // -> minLimit > 0 diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C index 95a5fce3e44..02d3b186eff 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C +++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C @@ -195,7 +195,7 @@ void Foam::Function1Types::TableBase<Type>::check() const << nl << exit(FatalError); } - label n = table_.size(); + const label n = table_.size(); scalar prevValue = table_[0].first(); for (label i = 1; i < n; ++i) @@ -221,7 +221,7 @@ bool Foam::Function1Types::TableBase<Type>::checkMinBounds scalar& xDash ) const { - if (x < table_[0].first()) + if (x < table_.first().first()) { switch (boundsHandling_) { @@ -238,19 +238,28 @@ bool Foam::Function1Types::TableBase<Type>::checkMinBounds << "value (" << x << ") underflow" << nl << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + xDash = table_.first().first(); + return true; + break; } case CLAMP: { - xDash = table_[0].first(); + xDash = table_.first().first(); return true; break; } case REPEAT: { // adjust x to >= minX - scalar span = table_.last().first() - table_[0].first(); - xDash = fmod(x - table_[0].first(), span) + table_[0].first(); + const scalar span = + table_.last().first() - table_.first().first(); + + xDash = + ( + fmod(x - table_.first().first(), span) + + table_.first().first() + ); break; } } @@ -288,7 +297,10 @@ bool Foam::Function1Types::TableBase<Type>::checkMaxBounds << "value (" << x << ") overflow" << nl << endl; - // fall-through to 'CLAMP' + // Behaviour as per 'CLAMP' + xDash = table_.last().first(); + return true; + break; } case CLAMP: { @@ -299,8 +311,14 @@ bool Foam::Function1Types::TableBase<Type>::checkMaxBounds case REPEAT: { // adjust x to >= minX - scalar span = table_.last().first() - table_[0].first(); - xDash = fmod(x - table_[0].first(), span) + table_[0].first(); + const scalar span = + table_.last().first() - table_.first().first(); + + xDash = + ( + fmod(x - table_.first().first(), span) + + table_.first().first() + ); break; } } @@ -335,7 +353,7 @@ Type Foam::Function1Types::TableBase<Type>::value(const scalar x) const if (checkMinBounds(x, xDash)) { - return table_[0].second(); + return table_.first().second(); } if (checkMaxBounds(xDash, xDash)) @@ -411,13 +429,11 @@ void Foam::Function1Types::TableBase<Type>::writeEntries(Ostream& os) const { if (boundsHandling_ != CLAMP) { - os.writeKeyword("outOfBounds") << boundsHandlingToWord(boundsHandling_) - << token::END_STATEMENT << nl; + os.writeEntry("outOfBounds", boundsHandlingToWord(boundsHandling_)); } if (interpolationScheme_ != "linear") { - os.writeKeyword("interpolationScheme") << interpolationScheme_ - << token::END_STATEMENT << nl; + os.writeEntry("interpolationScheme", interpolationScheme_); } } -- GitLab