Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / MeshObject / MeshObject.C
bloba92a3d0ac72a922e00b2746468ebe91aac3a8162
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 \*---------------------------------------------------------------------------*/
26 #include "MeshObject.H"
27 #include "objectRegistry.H"
29 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
31 template<class Mesh, class Type>
32 Foam::MeshObject<Mesh, Type>::MeshObject(const Mesh& mesh)
34     regIOobject
35     (
36         IOobject
37         (
38             Type::typeName,
39             mesh.thisDb().instance(),
40             mesh.thisDb()
41         )
42     ),
43     mesh_(mesh)
47 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
49 template<class Mesh, class Type>
50 const Type& Foam::MeshObject<Mesh, Type>::New
52     const Mesh& mesh
55     if
56     (
57         mesh.thisDb().objectRegistry::template foundObject<Type>
58         (
59             Type::typeName
60         )
61     )
62     {
63         return mesh.thisDb().objectRegistry::template lookupObject<Type>
64         (
65             Type::typeName
66         );
67     }
68     else
69     {
70         return store(new Type(mesh));
71     }
75 template<class Mesh, class Type>
76 template<class Data1>
77 const Type& Foam::MeshObject<Mesh, Type>::New
79     const Mesh& mesh,
80     const Data1& d
83     if
84     (
85         mesh.thisDb().objectRegistry::template foundObject<Type>
86         (
87             Type::typeName
88         )
89     )
90     {
91         return mesh.thisDb().objectRegistry::template lookupObject<Type>
92         (
93             Type::typeName
94         );
95     }
96     else
97     {
98         return store(new Type(mesh, d));
99     }
103 template<class Mesh, class Type>
104 template<class Data1, class Data2>
105 const Type& Foam::MeshObject<Mesh, Type>::New
107     const Mesh& mesh,
108     const Data1& d1,
109     const Data2& d2
112     if
113     (
114         mesh.thisDb().objectRegistry::template foundObject<Type>
115         (
116             Type::typeName
117         )
118     )
119     {
120         return mesh.thisDb().objectRegistry::template lookupObject<Type>
121         (
122             Type::typeName
123         );
124     }
125     else
126     {
127         return store(new Type(mesh, d1, d2));
128     }
132 template<class Mesh, class Type>
133 template<class Data1, class Data2, class Data3>
134 const Type& Foam::MeshObject<Mesh, Type>::New
136     const Mesh& mesh,
137     const Data1& d1,
138     const Data2& d2,
139     const Data3& d3
142     if
143     (
144         mesh.thisDb().objectRegistry::template foundObject<Type>
145         (
146             Type::typeName
147         )
148     )
149     {
150         return mesh.thisDb().objectRegistry::template lookupObject<Type>
151         (
152             Type::typeName
153         );
154     }
155     else
156     {
157         return store(new Type(mesh, d1, d2, d3));
158     }
162 template<class Mesh, class Type>
163 template<class Data1, class Data2, class Data3, class Data4>
164 const Type& Foam::MeshObject<Mesh, Type>::New
166     const Mesh& mesh,
167     const Data1& d1,
168     const Data2& d2,
169     const Data3& d3,
170     const Data4& d4
173     if
174     (
175         mesh.thisDb().objectRegistry::template foundObject<Type>
176         (
177             Type::typeName
178         )
179     )
180     {
181         return mesh.thisDb().objectRegistry::template lookupObject<Type>
182         (
183             Type::typeName
184         );
185     }
186     else
187     {
188         return store(new Type(mesh, d1, d2, d3, d4));
189     }
193 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * //
195 template<class Mesh, class Type>
196 bool Foam::MeshObject<Mesh, Type>::Delete(const Mesh& mesh)
198     if
199     (
200         mesh.thisDb().objectRegistry::template foundObject<Type>
201         (
202             Type::typeName
203         )
204     )
205     {
206         return mesh.thisDb().checkOut
207         (
208             const_cast<Type&>
209             (
210                 mesh.thisDb().objectRegistry::template lookupObject<Type>
211                 (
212                     Type::typeName
213                 )
214             )
215         );
216     }
217     else
218     {
219         return false;
220     }
224 template<class Mesh, class Type>
225 Foam::MeshObject<Mesh, Type>::~MeshObject()
227     release();
231 // ************************************************************************* //