FreeFOAM The Cross-Platform CFD Toolkit
wordReIO.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "wordRe.H"
27 #include <OpenFOAM/IOstreams.H>
28 #include <OpenFOAM/InfoProxy.H>
29 
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 
33 :
34  word(),
35  re_(NULL)
36 {
37  is >> *this;
38 }
39 
40 
42 {
43  token t(is);
44 
45  if (!t.good())
46  {
47  is.setBad();
48  return is;
49  }
50 
51  if (t.isWord())
52  {
53  w = t.wordToken();
54  }
55  else if (t.isString())
56  {
57  // Auto-tests for regular expression
58  w = t.stringToken();
59  }
60  else
61  {
62  is.setBad();
63  FatalIOErrorIn("operator>>(Istream&, wordRe&)", is)
64  << "wrong token type - expected word or string found "
65  << t.info()
66  << exit(FatalIOError);
67 
68  return is;
69  }
70 
71  // Check state of IOstream
72  is.check("Istream& operator>>(Istream&, wordRe&)");
73 
74  return is;
75 }
76 
77 
79 {
80  os.writeQuoted(w, w.isPattern());
81  os.check("Ostream& operator<<(Ostream&, const wordRe&)");
82  return os;
83 }
84 
85 
87 {
88  if (isPattern())
89  {
90  os << "wordRe(regex) " << *this;
91  }
92  else
93  {
94  os << "wordRe(plain) \"" << *this << '"';
95  }
96  os.flush();
97 
98  return os;
99 }
100 
101 
102 // ************************ vim: set sw=4 sts=4 et: ************************ //