From dc237f20a8c3f9775578f59da3c77d6b1572c674 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Thu, 5 Aug 2010 14:47:49 +0200
Subject: [PATCH] ENH: merge polyPatchID and ZoneID together into DynamicID

---
 src/OpenFOAM/Make/files                       |   2 +-
 .../DynamicID/DynamicID.H}                    |  55 +++---
 .../patch}/patchIdentifier.C                  |   0
 .../patch}/patchIdentifier.H                  |   0
 .../meshes/Identifiers/patch/polyPatchID.H    |  44 +++++
 .../ZoneID => Identifiers/zones}/ZoneIDs.H    |  25 +--
 .../polyMesh/zones/ZoneID/polyPatchID.H       | 158 ------------------
 7 files changed, 86 insertions(+), 198 deletions(-)
 rename src/OpenFOAM/meshes/{polyMesh/zones/ZoneID/ZoneID.H => Identifiers/DynamicID/DynamicID.H} (71%)
 rename src/OpenFOAM/meshes/{patchIdentifier => Identifiers/patch}/patchIdentifier.C (100%)
 rename src/OpenFOAM/meshes/{patchIdentifier => Identifiers/patch}/patchIdentifier.H (100%)
 create mode 100644 src/OpenFOAM/meshes/Identifiers/patch/polyPatchID.H
 rename src/OpenFOAM/meshes/{polyMesh/zones/ZoneID => Identifiers/zones}/ZoneIDs.H (81%)
 delete mode 100644 src/OpenFOAM/meshes/polyMesh/zones/ZoneID/polyPatchID.H

diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 4e356a2f05c..bc4369cf48e 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -329,7 +329,7 @@ $(cellShape)/cellShapeEqual.C
 $(cellShape)/cellShapeIO.C
 $(cellShape)/cellShapeIOList.C
 
-meshes/patchIdentifier/patchIdentifier.C
+meshes/Identifiers/patch/patchIdentifier.C
 
 polyMesh = meshes/polyMesh
 
diff --git a/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/ZoneID.H b/src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H
similarity index 71%
rename from src/OpenFOAM/meshes/polyMesh/zones/ZoneID/ZoneID.H
rename to src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H
index 99caad10689..286049ed558 100644
--- a/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/ZoneID.H
+++ b/src/OpenFOAM/meshes/Identifiers/DynamicID/DynamicID.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,43 +22,40 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::ZoneID
+    Foam::DynamicID
 
 Description
-    A class that holds the data needed to identify a zone in a dynamic mesh.
+    A class that holds the data needed to identify things (zones, patches)
+    in a dynamic mesh.
 
-    The zone is identified by name.
-    Its index in the zoneMesh is updated if the mesh has changed.
+    The thing is identified by name.
+    Its indices are updated if the mesh has changed.
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef ZoneID_H
-#define ZoneID_H
+#ifndef DynamicID_H
+#define DynamicID_H
 
 #include "keyType.H"
 #include "labelList.H"
-#include "polyMesh.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-template<class ZoneType, class MeshType> class ZoneMesh;
-
 // Forward declaration of friend functions and operators
+template<class> class DynamicID;
 
-template<class ZoneType> class ZoneID;
-
-template<class ZoneType>
-Ostream& operator<<(Ostream&, const ZoneID<ZoneType>&);
+template<class ObjectType>
+Ostream& operator<<(Ostream&, const DynamicID<ObjectType>&);
 
 /*---------------------------------------------------------------------------*\
-                           Class ZoneID Declaration
+                          Class DynamicID Declaration
 \*---------------------------------------------------------------------------*/
 
-template<class ZoneType>
-class ZoneID
+template<class ObjectType>
+class DynamicID
 {
     // Private data
 
@@ -74,17 +71,17 @@ public:
     // Constructors
 
         //- Construct from name
-        ZoneID(const keyType& key, const ZoneMesh<ZoneType, polyMesh>& zm)
+        DynamicID(const keyType& key, const ObjectType& obj)
         :
             key_(key),
-            indices_(zm.findIndices(key_))
+            indices_(obj.findIndices(key_))
         {}
 
         //- Construct from Istream
-        ZoneID(Istream& is, const ZoneMesh<ZoneType, polyMesh>& zm)
+        DynamicID(Istream& is, const ObjectType& obj)
         :
             key_(is),
-            indices_(zm.findIndices(key_))
+            indices_(obj.findIndices(key_))
         {}
 
 
@@ -123,30 +120,30 @@ public:
         // Edit
 
             //- Update
-            void update(const ZoneMesh<ZoneType, polyMesh>& zm)
+            void update(const ObjectType& obj)
             {
-                indices_ = zm.findIndices(key_);
+                indices_ = obj.findIndices(key_);
             }
 
 
     // IOstream Operators
 
-        friend Ostream& operator<< <ZoneType>
-        (Ostream&, const ZoneID<ZoneType>&);
+        friend Ostream& operator<< <ObjectType>
+        (Ostream&, const DynamicID<ObjectType>&);
 };
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-template<class ZoneType>
-Ostream& operator<<(Ostream& os, const ZoneID<ZoneType>& p)
+template<class ObjectType>
+Ostream& operator<<(Ostream& os, const DynamicID<ObjectType>& dynId)
 {
     os  << token::BEGIN_LIST
-        << p.name() << token::SPACE << p.index()
+        << dynId.name() << token::SPACE << dynId.index()
         << token::END_LIST;
 
     // Check state of Ostream
-    os.check("Ostream& operator<<(Ostream&, const ZoneID<ZoneType>&)");
+    os.check("Ostream& operator<<(Ostream&, const DynamicID<ObjectType>&)");
 
     return os;
 }
diff --git a/src/OpenFOAM/meshes/patchIdentifier/patchIdentifier.C b/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.C
similarity index 100%
rename from src/OpenFOAM/meshes/patchIdentifier/patchIdentifier.C
rename to src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.C
diff --git a/src/OpenFOAM/meshes/patchIdentifier/patchIdentifier.H b/src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.H
similarity index 100%
rename from src/OpenFOAM/meshes/patchIdentifier/patchIdentifier.H
rename to src/OpenFOAM/meshes/Identifiers/patch/patchIdentifier.H
diff --git a/src/OpenFOAM/meshes/Identifiers/patch/polyPatchID.H b/src/OpenFOAM/meshes/Identifiers/patch/polyPatchID.H
new file mode 100644
index 00000000000..eaa7423601e
--- /dev/null
+++ b/src/OpenFOAM/meshes/Identifiers/patch/polyPatchID.H
@@ -0,0 +1,44 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef polyPatchID_H
+#define polyPatchID_H
+
+#include "DynamicID.H"
+#include "polyBoundaryMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    //- Foam::polyPatchID
+    typedef DynamicID<polyBoundaryMesh> polyPatchID;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/ZoneIDs.H b/src/OpenFOAM/meshes/Identifiers/zones/ZoneIDs.H
similarity index 81%
rename from src/OpenFOAM/meshes/polyMesh/zones/ZoneID/ZoneIDs.H
rename to src/OpenFOAM/meshes/Identifiers/zones/ZoneIDs.H
index 0dc0a43c99d..9b7a6415f2a 100644
--- a/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/ZoneIDs.H
+++ b/src/OpenFOAM/meshes/Identifiers/zones/ZoneIDs.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,21 +26,26 @@ License
 #ifndef ZoneIDs_H
 #define ZoneIDs_H
 
-#include "ZoneID.H"
-#include "pointZone.H"
-#include "faceZone.H"
-#include "cellZone.H"
+#include "DynamicID.H"
+
+#include "cellZoneMeshFwd.H"
+#include "faceZoneMeshFwd.H"
+#include "pointZoneMeshFwd.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    //- Foam::pointZoneID
-    typedef ZoneID<pointZone> pointZoneID;
-    //- Foam::faceZoneID
-    typedef ZoneID<faceZone> faceZoneID;
+
     //- Foam::cellZoneID
-    typedef ZoneID<cellZone> cellZoneID;
+    typedef DynamicID<cellZoneMesh> cellZoneID;
+
+    //- Foam::faceZoneID
+    typedef DynamicID<faceZoneMesh> faceZoneID;
+
+    //- Foam::pointZoneID
+    typedef DynamicID<pointZoneMesh> pointZoneID;
+
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/polyPatchID.H b/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/polyPatchID.H
deleted file mode 100644
index 75f6a613040..00000000000
--- a/src/OpenFOAM/meshes/polyMesh/zones/ZoneID/polyPatchID.H
+++ /dev/null
@@ -1,158 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-Class
-    Foam::polyPatchID
-
-Description
-    A class holds the data needed to identify a patch in a dynamic mesh.
-
-    The patch is identified by name and its index in the boundary mesh
-    is updated if the mesh has changed.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef polyPatchID_H
-#define polyPatchID_H
-
-#include "keyType.H"
-#include "labelList.H"
-#include "polyBoundaryMesh.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// Forward declaration of friend functions and operators
-
-class polyPatchID;
-Ostream& operator<<(Ostream&, const polyPatchID&);
-
-
-/*---------------------------------------------------------------------------*\
-                         Class polyPatchID Declaration
-\*---------------------------------------------------------------------------*/
-
-class polyPatchID
-{
-    // Private data
-
-        //- Patch name
-        keyType key_;
-
-        //- Patch indices
-        labelList indices_;
-
-
-public:
-
-    // Constructors
-
-        //- Construct from name
-        polyPatchID(const keyType& key, const polyBoundaryMesh& bm)
-        :
-            key_(key),
-            index_(bm.findIndices(key_))
-        {}
-
-        //- Construct from Istream
-        polyPatchID(Istream& is, const polyBoundaryMesh& bm)
-        :
-            key_(is),
-            index_(bm.findIndices(key_))
-        {}
-
-
-    // Destructor - default
-
-
-    // Member Functions
-
-        // Access
-
-            //- Return name
-            const keyType& name() const
-            {
-                return key_;
-            }
-
-            //- Return indices of matching patches
-            const labelList& indices() const
-            {
-                return indices_;
-            }
-
-            //- Return index of first matching patch
-            label index() const
-            {
-                return indices_.empty() ? -1 : indices_[0];
-            }
-
-            //- Has the patch been found
-            bool active() const
-            {
-                return !indices_.empty();
-            }
-
-
-        // Edit
-
-            //- Update
-            void update(const polyBoundaryMesh& bm)
-            {
-                indices_ = bm.findIndices(key_);
-            }
-
-
-    // Ostream Operator
-
-        friend Ostream& operator<<(Ostream&, const polyPatchID&);
-
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-Ostream& operator<<(Ostream& os, const polyPatchID& p)
-{
-    os  << token::BEGIN_LIST
-        << p.name() << token::SPACE << p.index()
-        << token::END_LIST;
-
-    // Check state of Ostream
-    os.check("Ostream& operator<<(Ostream&, const polyPatchID&)");
-
-    return os;
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
-- 
GitLab