]> git.mxchange.org Git - simgear.git/commitdiff
Comparison operators for SGSharedPtr
authorThomas Geymayer <tomgey@gmail.com>
Sat, 13 Apr 2013 14:20:50 +0000 (16:20 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Sat, 13 Apr 2013 14:21:04 +0000 (16:21 +0200)
simgear/structure/SGSharedPtr.hxx

index 479c197294247e96dbf90c46639863cabbadeb04..081d5eb943b1bcb43cf89661228b4477ea94a7ab 100644 (file)
@@ -132,4 +132,42 @@ SGSharedPtr<T> static_pointer_cast(SGSharedPtr<U> const & r)
 {
   return SGSharedPtr<T>( static_cast<T*>(r.get()) );
 }
+
+/**
+ * Compare two SGSharedPtr<T> objects for equality.
+ *
+ * @note Only pointer values are compared, not the actual objects they are
+ *       pointing at.
+ */
+template<class T, class U>
+bool operator==(const SGSharedPtr<T>& lhs, const SGSharedPtr<U>& rhs)
+{
+  return lhs.get() == rhs.get();
+}
+
+/**
+ * Compare two SGSharedPtr<T> objects for equality.
+ *
+ * @note Only pointer values are compared, not the actual objects they are
+ *       pointing at.
+ */
+template<class T, class U>
+bool operator!=(const SGSharedPtr<T>& lhs, const SGSharedPtr<U>& rhs)
+{
+  return lhs.get() != rhs.get();
+}
+
+/**
+ * Compare two SGSharedPtr<T> objects for weak ordering.
+ *
+ * @note Only pointer values are compared, not the actual objects they are
+ *       pointing at.
+ * @note This allows using SGSharedPtr as key in associative containers like for
+ *       example std::map and std::set.
+ */
+template<class T, class U>
+bool operator<(const SGSharedPtr<T>& lhs, const SGSharedPtr<U>& rhs)
+{
+  return lhs.get() < rhs.get();
+}
 #endif