Foam::Istream& Foam::regIOobject::readStream(const word& expectName) { if (IFstream::debug) { Info<< "regIOobject::readStream(const word&) : " << "reading object " << name() << " from file " << objectPath() << endl; } // Construct IFstream if not already constructed if (!isPtr_) { readStream(); // Check the className of the regIOobject // dictionary is an allowable name in case the actual class // instantiated is a dictionary if ( expectName.size() && headerClassName() != expectName && headerClassName() != "dictionary" ) { FatalIOErrorIn("regIOobject::readStream(const word&)", *isPtr_) << "unexpected class name " << headerClassName() << " expected " << expectName << endl << " while reading object " << name() << exit(FatalIOError); } } return *isPtr_; }
void Foam::CompactIOField<T, BaseType>::readFromStream() { Istream& is = readStream(word::null); if (headerClassName() == IOField<T>::typeName) { is >> static_cast<Field<T>&>(*this); close(); }
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::regIOobject::readIfModified() { if (lastModified_) { time_t newTimeStamp = lastModified(filePath()); bool readFile = false; if (newTimeStamp > (lastModified_ + fileModificationSkew)) { readFile = true; } if (Pstream::parRun()) { bool readFileOnThisProc = readFile; reduce(readFile, andOp<bool>()); if (readFileOnThisProc && !readFile) { WarningIn("regIOobject::readIfModified()") << "Delaying reading " << name() << " of class " << headerClassName() << " due to inconsistent " "file time-stamps between processors" << endl; } } if (readFile) { lastModified_ = newTimeStamp; Info<< "regIOobject::readIfModified() : " << nl << " Reading object " << name() << " from file " << filePath() << endl; return read(); } else { return false; } } else { return false; } }