Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / foam / primitives / Scalar / ScalarTemplate.C
blob56cc78bd616d77d17a2e80926f4d1d51fb6604a1
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 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
28 namespace Foam
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33 const char* const pTraits<Scalar>::typeName = "scalar";
34 const Scalar pTraits<Scalar>::zero = 0.0;
35 const Scalar pTraits<Scalar>::one = 1.0;
36 const Scalar pTraits<Scalar>::min = -ScalarVGREAT;
37 const Scalar pTraits<Scalar>::max = ScalarVGREAT;
39 const char* pTraits<Scalar>::componentNames[] = { "x" };
41 pTraits<Scalar>::pTraits(Istream& is)
43     is >> p_;
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 word name(const Scalar val)
51     std::ostringstream buf;
52     buf << val;
53     return buf.str();
57 // * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
59 Scalar readScalar(Istream& is)
61     Scalar rs;
62     is >> rs;
64     return rs;
68 Istream& operator>>(Istream& is, Scalar& s)
70     token t(is);
72     if (!t.good())
73     {
74         is.setBad();
75         return is;
76     }
78     if (t.isNumber())
79     {
80         s = t.number();
81     }
82     else
83     {
84         is.setBad();
85         FatalIOErrorIn("operator>>(Istream&, Scalar&)", is)
86             << "wrong token type - expected Scalar found " << t.info()
87             << exit(FatalIOError);
89         return is;
90     }
92     // Check state of Istream
93     is.check("Istream& operator>>(Istream&, Scalar&)");
95     return is;
99 Ostream& operator<<(Ostream& os, const Scalar s)
101     os.write(s);
102     os.check("Ostream& operator<<(Ostream&, const Scalar&)");
103     return os;
107 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 } // End namespace Foam
111 // ************************************************************************* //