Qpid Proton C++  0.12.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
comparable.hpp
1 #ifndef COMPARABLE_HPP
2 #define COMPARABLE_HPP
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements. See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership. The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License. You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied. See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21 
22 
24 namespace proton {
25 
27 template <class T> class comparable {};
28 
29 template <class T> bool operator>(const comparable<T> &a, const comparable<T> &b) {
30  return static_cast<const T&>(b) < static_cast<const T&>(a);
31 }
32 
33 template <class T> bool operator<=(const comparable<T> &a, const comparable<T> &b) {
34  return !(static_cast<const T&>(a) > static_cast<const T&>(b));
35 }
36 
37 template <class T> bool operator>=(const comparable<T> &a, const comparable<T> &b) {
38  return !(static_cast<const T&>(a) < static_cast<const T&>(b));
39 }
40 
41 template <class T> bool operator!=(const comparable<T> &a, const comparable<T> &b) {
42  return !(static_cast<const T&>(a) == static_cast<const T&>(b));
43 }
44 
45 }
46 
48 
49 #endif // COMPARABLE_HPP