summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/Comparable.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/Comparable.h')
-rw-r--r--cpp/include/Ice/Comparable.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/cpp/include/Ice/Comparable.h b/cpp/include/Ice/Comparable.h
new file mode 100644
index 00000000000..7becd593401
--- /dev/null
+++ b/cpp/include/Ice/Comparable.h
@@ -0,0 +1,63 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_COMPARABLE_H
+#define ICE_COMPARABLE_H
+
+namespace Ice
+{
+
+template<typename T, typename U>
+inline bool targetEquals(const T& lhs, const U& rhs)
+{
+ if(lhs && rhs)
+ {
+ return *lhs == *rhs;
+ }
+ else
+ {
+ return !lhs && !rhs;
+ }
+}
+
+template<typename T>
+struct TargetEquals
+{
+ bool operator()(const T& lhs, const T& rhs) const
+ {
+ return targetEquals(lhs, rhs);
+ }
+};
+
+
+template<typename T, typename U>
+inline bool targetLess(const T& lhs, const U& rhs)
+{
+ if(lhs && rhs)
+ {
+ return *lhs < *rhs;
+ }
+ else
+ {
+ return !lhs && rhs;
+ }
+}
+
+template<typename T>
+struct TargetLess
+{
+ bool operator()(const T& lhs, const T& rhs) const
+ {
+ return targetLess(lhs, rhs);
+ }
+};
+
+}
+
+#endif