diff --git a/src/OpenFOAM/primitives/Scalar/scalar/scalar.C b/src/OpenFOAM/primitives/Scalar/scalar/scalar.C index 0038b1d642..30b9127fc1 100644 --- a/src/OpenFOAM/primitives/Scalar/scalar/scalar.C +++ b/src/OpenFOAM/primitives/Scalar/scalar/scalar.C @@ -40,6 +40,24 @@ Foam::scalar Foam::readScalar(Istream& is) } +Foam::scalar Foam::readScalarOrDefault(Istream& is, const scalar defaultValue) +{ + if (is.good()) + { + token tok(is); + + if (tok.isNumber()) + { + return tok.scalarToken(); + } + + is.putBack(tok); + } + + return defaultValue; +} + + Foam::scalar Foam::readRawScalar(Istream& is) { scalar val(0); diff --git a/src/OpenFOAM/primitives/Scalar/scalar/scalar.H b/src/OpenFOAM/primitives/Scalar/scalar/scalar.H index 58bb002e98..cd5d155043 100644 --- a/src/OpenFOAM/primitives/Scalar/scalar/scalar.H +++ b/src/OpenFOAM/primitives/Scalar/scalar/scalar.H @@ -103,6 +103,9 @@ namespace Foam //- Read scalar from stream. scalar readScalar(Istream& is); + //- Read scalar from stream if present or return default value + scalar readScalarOrDefault(Istream& is, const scalar defaultValue); + //- Read raw scalar from binary stream. // \note No internal check for binary vs ascii, // the caller knows what they are doing @@ -172,6 +175,9 @@ namespace Foam //- Read scalar from stream. scalar readScalar(Istream& is); + //- Read scalar from stream if present or return default value + scalar readScalarOrDefault(Istream& is, const scalar defaultValue); + //- Read raw scalar from binary stream. // \note No internal check for binary vs ascii, // the caller knows what they are doing