Renamed and cleaned foam-extend
[foam-extend-3.0.git] / src / foam / primitives / bools / bool / bool.H
blobe60cbc20b86ffa422a010e61cd511f1fdbde8f12
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     |
5     \\  /    A nd           | For copyright notice see file Copyright
6      \\/     M anipulation  |
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 Primitive
25     bool
27 Description
28     System bool
30 SourceFiles
31     boolIO.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef bool_H
36 #define bool_H
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 namespace Foam
43 class Istream;
44 class Ostream;
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 Istream& operator>>(Istream&, bool&);
49 Ostream& operator<<(Ostream&, const bool);
51 bool readBool(Istream&);
53 } // End namespace Foam
56 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
58 #include "pTraits.H"
60 namespace Foam
63 // template specialisation for pTraits<bool>
64 template<>
65 class pTraits<bool>
67     bool p_;
69 public:
71     //- Component type
72     typedef bool cmptType;
74     // Member constants
76         enum
77         {
78             dim = 3,         // Dimensionality of space
79             rank = 0,        // Rank of bool is 0
80             nComponents = 1  // Number of components in bool is 1
81         };
84     // Static data members
86         static const char* const typeName;
87         static const char* componentNames[];
88         static const bool zero;
89         static const bool one;
92     // Constructors
94         //- Construct from bool
95         pTraits(const bool b)
96         {
97             p_ = b;
98         }
100         //- Construct from Istream
101         pTraits(Istream&);
104     // Member Functions
106         operator bool() const
107         {
108             return p_;
109         }
111         operator bool&()
112         {
113             return p_;
114         }
118 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 } // End namespace Foam
122 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 #endif
126 // ************************************************************************* //