diff --git a/src/OpenFOAM/db/IOobject/IOobject.H b/src/OpenFOAM/db/IOobject/IOobject.H index 0bf7c438a69e6ccce3e8eb547eda0915b2ecc5e0..adc53426f009db59981972cf0fa41b9ea6ba6d45 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<class Type> + 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<void>() const +{ + return true; +} + + template<> Ostream& operator<<(Ostream& os, const InfoProxy<IOobject>& ip); diff --git a/src/OpenFOAM/db/IOobject/IOobjectI.H b/src/OpenFOAM/db/IOobject/IOobjectI.H index 2bcea039d542c46ef9caf2a60e67e947fb95a488..7d040c32c0f37ed31786182f378a65020ca4bb80 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<class Type> +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 86418838a23639db96df3db27c27bfcbadaf6a8a..abc8e8e1205fcc1db020f5845af8eb6fa2fd96e6 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<float>("version") ) ); + is.format(headerDict.get<word>("format")); + headerClassName_ = headerDict.get<word>("class"); const word headerObject(headerDict.get<word>("object")); + if (IOobject::debug && headerObject != name()) { IOWarningInFunction(is)