Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / primitiveShapes / objectHit / objectHit.H
blob421d9998cba7c095db8027105ff5fa12aa5258de
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
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.
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.
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/>.
24 Class
25     Foam::objectHit
27 Description
28     This class describes a combination of target object index and success flag.
30 \*---------------------------------------------------------------------------*/
32 #ifndef objectHit_H
33 #define objectHit_H
35 #include "bool.H"
36 #include "label.H"
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 namespace Foam
43 /*---------------------------------------------------------------------------*\
44                            Class objectHit Declaration
45 \*---------------------------------------------------------------------------*/
47 class objectHit
49     // Private data
51         //- Hit success
52         bool hit_;
54         //- Object of hit
55         label hitObject_;
58 public:
60     // Constructors
62         //- Construct null
63         objectHit()
64         :
65             hit_(false),
66             hitObject_(-1)
67         {}
69         //- Construct from components
70         objectHit(const bool success, const label obj)
71         :
72             hit_(success),
73             hitObject_(obj)
74         {}
76         //- Construct from Istream
77         objectHit(Istream& is)
78         :
79             hit_(readBool(is)),
80             hitObject_(readLabel(is))
81         {}
84     // Member Functions
86         //- Is there a hit
87         bool hit() const
88         {
89             return hit_;
90         }
92         //- Return hit object
93         label hitObject() const
94         {
95             return hitObject_;
96         }
99     // Friend Operators
101         inline friend bool operator==(const objectHit& a, const objectHit& b)
102         {
103             return (a.hit_ == b.hit_) && (a.hitObject_ == b.hitObject_);
104         }
106         inline friend bool operator!=(const objectHit& a, const objectHit& b)
107         {
108             return !(a == b);
109         }
112     // Ostream operator
114         inline friend Ostream& operator<<(Ostream& os, const objectHit& obj)
115         {
116              return os << obj.hit() << token::SPACE << obj.hitObject();
117         }
121 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
123 } // End namespace Foam
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
127 #endif
129 // ************************************************************************* //