diff --git a/src/OpenFOAM/db/IOobject/IOobject.H b/src/OpenFOAM/db/IOobject/IOobject.H index 0bf7c438a6..adc53426f0 100644 --- a/src/OpenFOAM/db/IOobject/IOobject.H +++ b/src/OpenFOAM/db/IOobject/IOobject.H @@ -359,6 +359,16 @@ public: inline bool& globalObject(); + // Checks + + //- Test if headerClassName() equals the given class name + inline bool isHeaderClassName(const word& clsName) const; + + //- Test if headerClassName() equals Type::typeName + template + inline bool isHeaderClassName() const; + + // Read/write options //- The read option @@ -488,6 +498,14 @@ public: }; +//- Specialization for \c void always returns true (no headerClassName check). +template<> +inline bool IOobject::isHeaderClassName() const +{ + return true; +} + + template<> Ostream& operator<<(Ostream& os, const InfoProxy& ip); diff --git a/src/OpenFOAM/db/IOobject/IOobjectI.H b/src/OpenFOAM/db/IOobject/IOobjectI.H index 2bcea039d5..7d040c32c0 100644 --- a/src/OpenFOAM/db/IOobject/IOobjectI.H +++ b/src/OpenFOAM/db/IOobject/IOobjectI.H @@ -107,6 +107,21 @@ inline bool& Foam::IOobject::globalObject() } +// Checks + +inline bool Foam::IOobject::isHeaderClassName(const word& clsName) const +{ + return (clsName == headerClassName_); +} + + +template +inline bool Foam::IOobject::isHeaderClassName() const +{ + return (Type::typeName == headerClassName_); +} + + // Read/write options inline Foam::IOobject::readOption Foam::IOobject::readOpt() const diff --git a/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C b/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C index 86418838a2..abc8e8e120 100644 --- a/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C +++ b/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C @@ -74,10 +74,13 @@ bool Foam::IOobject::readHeader(Istream& is) headerDict.get("version") ) ); + is.format(headerDict.get("format")); + headerClassName_ = headerDict.get("class"); const word headerObject(headerDict.get("object")); + if (IOobject::debug && headerObject != name()) { IOWarningInFunction(is)