From 1b0cf102cc4b1b9f1d5626bedd87c4e3f0932a0a Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Fri, 4 Dec 2009 16:22:59 +0100 Subject: [PATCH] testing on fileName Istream construction --- .../test/fileNameClean/fileNameCleanTest.C | 19 ++++++++++- .../primitives/strings/fileName/fileNameIO.C | 33 ++++++++++++++----- src/OpenFOAM/primitives/strings/word/wordIO.C | 3 -- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/applications/test/fileNameClean/fileNameCleanTest.C b/applications/test/fileNameClean/fileNameCleanTest.C index 70317e61ede..ce52da1e00e 100644 --- a/applications/test/fileNameClean/fileNameCleanTest.C +++ b/applications/test/fileNameClean/fileNameCleanTest.C @@ -66,10 +66,11 @@ int main(int argc, char *argv[]) argList::noBanner(); argList::noParallel(); argList::validArgs.insert("fileName .. fileNameN"); + argList::addOption("istream", "fileName", "test Istream values"); argList args(argc, argv, false, true); - if (args.additionalArgs().empty()) + if (args.additionalArgs().empty() && args.options().empty()) { args.printUsage(); } @@ -95,6 +96,22 @@ int main(int argc, char *argv[]) printCleaning(pathName); } + if (args.optionFound("istream")) + { + args.optionLookup("istream")() >> pathName; + + Info<< nl + << "-case" << nl + << "path = " << args.path() << nl + << "root = " << args.rootPath() << nl + << "case = " << args.caseName() << nl + << "FOAM_CASE=" << getEnv("FOAM_CASE") << nl + << "FOAM_CASENAME=" << getEnv("FOAM_CASENAME") << nl + << endl; + + printCleaning(pathName); + } + Info<< "\nEnd\n" << endl; return 0; } diff --git a/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C b/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C index bed17b9fd15..b7618bf5442 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Istream constructor and IOstream operators for fileName. - \*---------------------------------------------------------------------------*/ #include "fileName.H" @@ -34,21 +31,41 @@ Description Foam::fileName::fileName(Istream& is) : - string(is) + string() { - stripInvalid(); + is >> *this; } Foam::Istream& Foam::operator>>(Istream& is, fileName& fn) { - fileName fName(is); + token t(is); + + if (!t.good()) + { + is.setBad(); + return is; + } + + if (t.isString()) + { + fn = t.stringToken(); + } + else + { + is.setBad(); + FatalIOErrorIn("operator>>(Istream&, fileName&)", is) + << "wrong token type - expected string, found " << t.info() + << exit(FatalIOError); + + return is; + } + + fn.stripInvalid(); // Check state of Istream is.check("Istream& operator>>(Istream&, fileName&)"); - fn = fName; - return is; } diff --git a/src/OpenFOAM/primitives/strings/word/wordIO.C b/src/OpenFOAM/primitives/strings/word/wordIO.C index 20a2a216d14..b2b183075b0 100644 --- a/src/OpenFOAM/primitives/strings/word/wordIO.C +++ b/src/OpenFOAM/primitives/strings/word/wordIO.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Istream constructor and IOstream operators for word. - \*---------------------------------------------------------------------------*/ #include "word.H" -- GitLab