/usr/include/Ice/Comparable.h is in libzeroc-ice-dev 3.7.0-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | // **********************************************************************
//
// Copyright (c) 2003-2017 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
#include <functional>
namespace Ice
{
template<typename T, typename U>
inline bool targetEqualTo(const T& lhs, const U& rhs)
{
if(lhs && rhs)
{
return *lhs == *rhs;
}
else
{
return !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, typename U>
inline bool targetGreater(const T& lhs, const U& rhs)
{
return targetLess(rhs, lhs);
}
template<typename T, typename U>
inline bool targetLessEqual(const T& lhs, const U& rhs)
{
return !targetGreater(lhs, rhs);
}
template<typename T, typename U>
inline bool targetGreaterEqual(const T& lhs, const U& rhs)
{
return !targetLess(lhs, rhs);
}
template<typename T, typename U>
inline bool targetNotEqualTo(const T& lhs, const U& rhs)
{
return !targetEqualTo(lhs, rhs);
}
#ifdef ICE_CPP11_MAPPING
template<typename T, template<typename> class Compare>
struct TargetCompare
{
bool operator()(const T& lhs, const T& rhs) const
{
if(lhs && rhs)
{
return Compare<typename T::element_type>()(*lhs, *rhs);
}
else
{
return Compare<bool>()(static_cast<const bool>(lhs), static_cast<const bool>(rhs));
}
}
};
//
// Relational operators for generated structs and classes
//
template<class C, typename = std::enable_if<std::is_member_function_pointer<decltype(&C::ice_tuple)>::value>>
bool operator<(const C& lhs, const C& rhs)
{
return lhs.ice_tuple() < rhs.ice_tuple();
}
template<class C, typename = std::enable_if<std::is_member_function_pointer<decltype(&C::ice_tuple)>::value>>
bool operator<=(const C& lhs, const C& rhs)
{
return lhs.ice_tuple() <= rhs.ice_tuple();
}
template<class C, typename = std::enable_if<std::is_member_function_pointer<decltype(&C::ice_tuple)>::value>>
bool operator>(const C& lhs, const C& rhs)
{
return lhs.ice_tuple() > rhs.ice_tuple();
}
template<class C, typename = std::enable_if<std::is_member_function_pointer<decltype(&C::ice_tuple)>::value>>
bool operator>=(const C& lhs, const C& rhs)
{
return lhs.ice_tuple() >= rhs.ice_tuple();
}
template<class C, typename = std::enable_if<std::is_member_function_pointer<decltype(&C::ice_tuple)>::value>>
bool operator==(const C& lhs, const C& rhs)
{
return lhs.ice_tuple() == rhs.ice_tuple();
}
template<class C, typename = std::enable_if<std::is_member_function_pointer<decltype(&C::ice_tuple)>::value>>
bool operator!=(const C& lhs, const C& rhs)
{
return lhs.ice_tuple() != rhs.ice_tuple();
}
#endif
}
#endif
|