Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / equationReader / equation / equationIO.C
blobb18c879d692adf852a809f8cc4d4dd552f0dde84
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "equation.H"
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30 // * * * * * * * * * * * * * Friend IOstream Operators * * * * * * * * * * * //
32 Foam::Istream& Foam::operator>>(Istream& is, equation& I)
34     // Acceptable istream formats:
35     //      scalar;
36     //      string;
37     //      [dimensionSet] scalar;
38     //      [dimensionSet] string;
39     //      name [dimensionSet] scalar;
40     //      name [dimensionSet] string;
42     if (I.equationName_ == word::null)
43     {
44         I.equationName_ = "fromIstream";
45     }
46     token t(is);
47     if (t.isString())
48     {
49         I.rawText_ = t.stringToken();
50     }
51     else if (t.isNumber())
52     {
53         I.rawText_ = string(name(t.number()));
54     }
55     else if (t.isPunctuation())
56     {
57         is.putBack(t);
58         I.changeDimensions_ = true;
59         I.overrideDimensions_.reset(dimensionSet(is));
60         token t2(is);
61         if (t2.isString())
62         {
63             is.putBack(t2);
64             I.rawText_ = string(is);
65         }
66         else // number
67         {
68             I.rawText_ = string(name(t.number()));
69         }
70     }
71     else if (t.isWord())
72     {
73         word garbage(t.wordToken());
74         I.changeDimensions_ = true;
75         I.overrideDimensions_.reset(dimensionSet(is));
76         token t2(is);
77         if (t2.isString())
78         {
79             is.putBack(t2);
80             I.rawText_ = string(is);
81         }
82         else // number
83         {
84             I.rawText_ = string(name(t.number()));
85         }
86     }
87     return is;
91 Foam::Ostream& Foam::operator<<(Ostream& os, const equation& I)
93     if (I.changeDimensions_)
94     {
95         os  << I.overrideDimensions_ << token::TAB
96             << I.rawText_;
97     }
98     else
99     {
100         os << I.rawText_;
101     }
102     return os;
105 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
107 // ************************************************************************* //