diff options
Diffstat (limited to 'cpp/include/Ice/Comparable.h')
-rw-r--r-- | cpp/include/Ice/Comparable.h | 63 |
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 |