Mesa (master): clover/util: Define equality operators for a couple of compat classes.

Francisco Jerez currojerez at kemper.freedesktop.org
Mon Oct 20 07:43:38 UTC 2014


Module: Mesa
Branch: master
Commit: e987fd5dc6bf8cd161e442c8e6231f0334e12dbf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e987fd5dc6bf8cd161e442c8e6231f0334e12dbf

Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Oct  9 01:06:21 2014 +0300

clover/util: Define equality operators for a couple of compat classes.

---

 src/gallium/state_trackers/clover/util/compat.hpp |   43 ++++++++++++++-------
 1 file changed, 30 insertions(+), 13 deletions(-)

diff --git a/src/gallium/state_trackers/clover/util/compat.hpp b/src/gallium/state_trackers/clover/util/compat.hpp
index ca5b892..eaae8c0 100644
--- a/src/gallium/state_trackers/clover/util/compat.hpp
+++ b/src/gallium/state_trackers/clover/util/compat.hpp
@@ -36,6 +36,21 @@ namespace clover {
       //       source.  Get rid of this as soon as everything can be
       //       compiled as C++11.
 
+      namespace detail {
+         template<typename R, typename S>
+         bool
+         ranges_equal(const R &a, const S &b) {
+            if (a.size() != b.size())
+               return false;
+
+            for (size_t i = 0; i < a.size(); ++i)
+               if (a[i] != b[i])
+                  return false;
+
+            return true;
+         }
+      }
+
       template<typename T>
       class vector {
       protected:
@@ -101,6 +116,11 @@ namespace clover {
             return *this;
          }
 
+         bool
+         operator==(const vector &v) const {
+            return detail::ranges_equal(*this, v);
+         }
+
          void
          reserve(size_type n) {
             if (_capacity < n) {
@@ -199,6 +219,11 @@ namespace clover {
          vector_ref(C &v) : p(&*v.begin()), n(v.size()) {
          }
 
+         bool
+         operator==(const vector_ref &v) const {
+            return detail::ranges_equal(*this, v);
+         }
+
          size_type
          size() const {
             return n;
@@ -306,6 +331,11 @@ namespace clover {
             return std::string(v.begin(), v.end());
          }
 
+         bool
+         operator==(const string &s) const {
+            return this->v == s.v;
+         }
+
          void
          reserve(size_type n) {
             v.reserve(n);
@@ -382,19 +412,6 @@ namespace clover {
          mutable vector<char> v;
       };
 
-      template<typename T>
-      bool
-      operator==(const vector_ref<T> &a, const vector_ref<T> &b) {
-         if (a.size() != b.size())
-            return false;
-
-         for (size_t i = 0; i < a.size(); ++i)
-            if (a[i] != b[i])
-               return false;
-
-         return true;
-      }
-
       class exception {
       public:
          exception() {}




More information about the mesa-commit mailing list