Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / surfMesh / surfZone / surfZoneIdentifier / surfZoneIdentifier.H
blob59043756c1d9f7445ff9707895e6869efe87260b
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 Class
25     Foam::surfZoneIdentifier
27 Description
28     An identifier for a surface zone on a meshed surface.
30     Similar in concept to a faceZone on the surface, but can also have a
31     "geometricType" as well.
33 SourceFiles
34     surfZoneIdentifier.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef surfZoneIdentifier_H
39 #define surfZoneIdentifier_H
41 #include "word.H"
42 #include "label.H"
43 #include "typeInfo.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 class dictionary;
52 // Forward declaration of friend functions and operators
54 class surfZoneIdentifier;
55 Ostream& operator<<(Ostream&, const surfZoneIdentifier&);
57 /*---------------------------------------------------------------------------*\
58                     Class surfZoneIdentifier Declaration
59 \*---------------------------------------------------------------------------*/
61 class surfZoneIdentifier
63     // Private data
65         //- Name of zone
66         word name_;
68         //- Index of zone in surface mesh
69         label index_;
71         //- Type name of zone
72         mutable word geometricType_;
75 public:
77     // Constructors
79         //- Construct null
80         surfZoneIdentifier();
82         //- Construct from components
83         surfZoneIdentifier
84         (
85             const word& name,
86             const label index,
87             const word& geometricType = word::null
89         );
91         //- Construct from dictionary
92         surfZoneIdentifier
93         (
94             const word& name,
95             const dictionary&,
96             const label index
97         );
99         //- Construct from another zone identifier, resetting the index
100         surfZoneIdentifier
101         (
102             const surfZoneIdentifier&,
103             const label index
104         );
107     // Destructor
109         virtual ~surfZoneIdentifier();
112     // Member Functions
114         //- Return name
115         const word& name() const
116         {
117             return name_;
118         }
120         //- Return name for modification
121         word& name()
122         {
123             return name_;
124         }
126         //- Return the geometric type of the zone
127         const word& geometricType() const
128         {
129             return geometricType_;
130         }
132         //- Return the geometric type of the zone for modification
133         word& geometricType()
134         {
135             return geometricType_;
136         }
138         //- Return the index of this zone in the surface mesh
139         label index() const
140         {
141             return index_;
142         }
144         //- Write surfZoneIdentifier as a dictionary
145         void write(Ostream&) const;
147         //- Write surfZoneIdentifier as a dictionary
148 //        void writeDict(Ostream&) const;
151     // Member Operators
153 //        bool operator!=(const surfZoneIdentifier&) const;
155 //        //- compare.
156 //        bool operator==(const surfZoneIdentifier&) const;
158     // Ostream Operator
160         friend Ostream& operator<<(Ostream&, const surfZoneIdentifier&);
161 //        friend Istream& operator>>(Istream&, surfZoneIdentifier&);
165 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167 } // End namespace Foam
169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171 #endif
173 // ************************************************************************* //