diff --git a/src/OpenFOAM/primitives/Scalar/scalar/scalar.C b/src/OpenFOAM/primitives/Scalar/scalar/scalar.C index 0038b1d6422be95bad3b0f1de563b8847fb62a19..30b9127fc104601a57250bfac62d52eb5be8ee31 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 58bb002e9811c6f47b08ba89e84445e0d264f93e..cd5d1550433a909aef4b6a8a1e23603020aff778 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