initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / OpenFOAM / meshes / primitiveShapes / objectHit / objectHit.H
blobfe2bf0986508ea59c9985ac45fe66684b790cb24
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::objectHit
28 Description
29     This class describes a combination of target object index and success flag.
31 \*---------------------------------------------------------------------------*/
33 #ifndef objectHit_H
34 #define objectHit_H
36 #include "bool.H"
37 #include "label.H"
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41 namespace Foam
44 // Forward declaration of friend functions and operators
46 class objectHit;
47 inline bool operator==(const objectHit& a, const objectHit& b);
48 inline bool operator!=(const objectHit& a, const objectHit& b);
49 inline Ostream& operator<<(Ostream& os, const objectHit& b);
52 /*---------------------------------------------------------------------------*\
53                            Class objectHit Declaration
54 \*---------------------------------------------------------------------------*/
56 class objectHit
58     // Private data
60         //- Hit success
61         bool hit_;
63         //- Object of hit
64         label hitObject_;
67 public:
69     // Constructors
71         //- Construct null
72         objectHit()
73         :
74             hit_(false),
75             hitObject_(-1)
76         {}
78         //- Construct from components
79         objectHit(const bool success, const label& obj)
80         :
81             hit_(success),
82             hitObject_(obj)
83         {}
85         //- Construct from Istream
86         objectHit(Istream& is)
87         :
88             hit_(readBool(is)),
89             hitObject_(readLabel(is))
90         {}
93     // Member Functions
95         //- Is there a hit
96         bool hit() const
97         {
98             return hit_;
99         }
101         //- Return hit object
102         label hitObject() const
103         {
104             return hitObject_;
105         }
108     // Friend Operators
110         friend bool operator==(const objectHit& a, const objectHit& b)
111         {
112             return ((a.hit_ == b.hit_) && (a.hitObject_ == b.hitObject_));
113         }
114             
115         friend bool operator!=(const objectHit& a, const objectHit& b)
116         {
117             return (!(a == b));
118         }
121     // Ostream operator
123         friend Ostream& operator<<(Ostream& os, const objectHit& b)
124         {
125              return os << b.hit() << token::SPACE << b.hitObject();
126         }
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
132 } // End namespace Foam
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 #endif
138 // ************************************************************************* //