Foam::Istream& Foam::regIOobject::readStream() { if (IFstream::debug) { Info<< "regIOobject::readStream() : " << "reading object " << name() << " from file " << objectPath() << endl; } if (readOpt() == NO_READ) { FatalErrorIn("regIOobject::readStream()") << "NO_READ specified for read-constructor of object " << name() << " of class " << headerClassName() << abort(FatalError); } // Construct object stream and read header if not already constructed if (!isPtr_) { if (!(isPtr_ = objectStream())) { FatalIOError ( "regIOobject::readStream()", __FILE__, __LINE__, objectPath(), 0 ) << "cannot open file" << exit(FatalIOError); } else if (!readHeader(*isPtr_)) { FatalIOErrorIn("regIOobject::readStream()", *isPtr_) << "problem while reading header for object " << name() << exit(FatalIOError); } } if (!lastModified_) { lastModified_ = lastModified(filePath()); } return *isPtr_; }
bool Foam::IOobject::headerOk() { bool ok = true; Istream* isPtr = objectStream(); // If the stream has failed return if (!isPtr) { if (objectRegistry::debug) { Info << "IOobject::headerOk() : " << "file " << objectPath() << " could not be opened" << endl; } ok = false; } else { // Try reading header if (!readHeader(*isPtr)) { if (objectRegistry::debug) { IOWarningIn("IOobject::headerOk()", (*isPtr)) << "failed to read header of file " << objectPath() << endl; } ok = false; } } delete isPtr; return ok; }
Foam::Istream* Foam::IOobject::objectStream() { return objectStream(filePath()); }