1/* 2 * Copyright 2003, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * All rights reserved. Distributed under the terms of the MIT license. 4 */ 5#ifndef _KERNEL_UTILS_ORDERS_H 6#define _KERNEL_UTILS_ORDERS_H 7 8namespace KernelUtilsOrder { 9 10// Ascending 11/*! \brief A compare function object implying and ascending order. 12 13 The < operator must be defined on the template argument type. 14*/ 15template<typename Value> 16class Ascending { 17public: 18 inline int operator()(const Value &a, const Value &b) const 19 { 20 if (a < b) 21 return -1; 22 else if (b < a) 23 return 1; 24 return 0; 25 } 26}; 27 28// Descending 29/*! \brief A compare function object implying and descending order. 30 31 The < operator must be defined on the template argument type. 32*/ 33template<typename Value> 34class Descending { 35public: 36 inline int operator()(const Value &a, const Value &b) const 37 { 38 if (a < b) 39 return -1; 40 else if (b < a) 41 return 1; 42 return 0; 43 } 44}; 45 46} // namespace KernelUtilsOrder 47 48#endif // _KERNEL_UTILS_ORDERS_H 49