From 53c8a1266866f0e13c2a759ebe3b9f4aaed60c47 Mon Sep 17 00:00:00 2001
From: laurence <laurence>
Date: Fri, 19 Jul 2013 15:48:33 +0100
Subject: [PATCH] ENH: Pair: Add extra comparison operators. Make member
 functions non-member

---
 src/OpenFOAM/primitives/Pair/Pair.H           | 85 ++++++++++++-------
 .../meshRefinement/meshRefinementBaffles.C    |  2 +-
 2 files changed, 56 insertions(+), 31 deletions(-)

diff --git a/src/OpenFOAM/primitives/Pair/Pair.H b/src/OpenFOAM/primitives/Pair/Pair.H
index 12c16fc6c3f..6715bffd7e5 100644
--- a/src/OpenFOAM/primitives/Pair/Pair.H
+++ b/src/OpenFOAM/primitives/Pair/Pair.H
@@ -108,12 +108,6 @@ public:
             return this->operator[](1);
         }
 
-        //- Return reverse pair
-        inline Pair<Type> reversePair() const
-        {
-            return Pair<Type>(second(), first());
-        }
-
         //- Return other
         inline const Type& other(const Type& a) const
         {
@@ -147,11 +141,11 @@ public:
         //  - -1: same pair, but reversed order
         static inline int compare(const Pair<Type>& a, const Pair<Type>& b)
         {
-            if (a[0] == b[0] && a[1] == b[1])
+            if (a == b)
             {
                 return 1;
             }
-            else if (a[0] == b[1] && a[1] == b[0])
+            else if (a == reverse(b))
             {
                 return -1;
             }
@@ -160,33 +154,64 @@ public:
                 return 0;
             }
         }
+};
 
 
-    // Friend Operators
+template<class Type>
+Pair<Type> reverse(const Pair<Type>& p)
+{
+    return Pair<Type>(p.second(), p.first());
+}
 
-        friend bool operator==(const Pair<Type>& a, const Pair<Type>& b)
-        {
-            return (a.first() == b.first() && a.second() == b.second());
-        }
 
-        friend bool operator!=(const Pair<Type>& a, const Pair<Type>& b)
-        {
-            return !(a == b);
-        }
+template<class Type>
+bool operator==(const Pair<Type>& a, const Pair<Type>& b)
+{
+    return (a.first() == b.first() && a.second() == b.second());
+}
 
-        friend bool operator<(const Pair<Type>& a, const Pair<Type>& b)
-        {
-            return
-            (
-                a.first() < b.first()
-             ||
-                (
-                    !(b.first() < a.first())
-                 && a.second() < b.second()
-                )
-            );
-        }
-};
+
+template<class Type>
+bool operator!=(const Pair<Type>& a, const Pair<Type>& b)
+{
+    return !(a == b);
+}
+
+
+template<class Type>
+bool operator<(const Pair<Type>& a, const Pair<Type>& b)
+{
+    return
+    (
+        a.first() < b.first()
+     ||
+        (
+            !(b.first() < a.first())
+         && a.second() < b.second()
+        )
+    );
+}
+
+
+template<class Type>
+bool operator<=(const Pair<Type>& a, const Pair<Type>& b)
+{
+    return !(b < a);
+}
+
+
+template<class Type>
+bool operator>(const Pair<Type>& a, const Pair<Type>& b)
+{
+    return (b < a);
+}
+
+
+template<class Type>
+bool operator>=(const Pair<Type>& a, const Pair<Type>& b)
+{
+    return !(a < b);
+}
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 6b9d1074c55..16528d3ea78 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -450,7 +450,7 @@ Foam::Map<Foam::labelPair>  Foam::meshRefinement::getZoneBafflePatches
                     labelPair patches = zPatches;
                     if (fZone.flipMap()[i])
                     {
-                       patches = patches.reversePair();
+                       patches = reverse(patches);
                     }
 
                     if (!bafflePatch.insert(faceI, patches))
-- 
GitLab