00001
00002
00008 #if !defined(__ads_min_max_h__)
00009 #define __ads_min_max_h__
00010
00011 #include "../defs.h"
00012
00013
00014 #include <algorithm>
00015
00016 BEGIN_NAMESPACE_ADS
00017
00018
00020
00021
00029 template<typename T>
00030 inline
00031 const T&
00032 min(const T& a, const T& b, const T& c) {
00033 return std::min(a, std::min(b, c));
00034 }
00035
00040 template<typename T>
00041 inline
00042 const T&
00043 min(const T& a, const T& b, const T& c, const T& d) {
00044 return std::min(a, ads::min(b, c, d));
00045 }
00046
00051 template<typename T>
00052 inline
00053 const T&
00054 min(const T& a, const T& b, const T& c, const T& d, const T& e) {
00055 return std::min(a, ads::min(b, c, d, e));
00056 }
00057
00065 template<typename T>
00066 inline
00067 const T&
00068 max(const T& a, const T& b, const T& c) {
00069 return std::max(a, std::max(b, c));
00070 }
00071
00076 template<typename T>
00077 inline
00078 const T&
00079 max(const T& a, const T& b, const T& c, const T& d) {
00080 return std::max(a, ads::max(b, c, d));
00081 }
00082
00087 template<typename T>
00088 inline
00089 const T&
00090 max(const T& a, const T& b, const T& c, const T& d, const T& e) {
00091 return std::max(a, ads::max(b, c, d, e));
00092 }
00093
00102 template<typename T, typename Compare>
00103 inline
00104 const T&
00105 min(const T& a, const T& b, const T& c, Compare comp) {
00106 return std::min(a, std::min(b, c, comp), comp);
00107 }
00108
00114 template<typename T, typename Compare>
00115 inline
00116 const T&
00117 min(const T& a, const T& b, const T& c, const T& d, Compare comp) {
00118 return std::min(a, ads::min(b, c, d, comp), comp);
00119 }
00120
00126 template<typename T, typename Compare>
00127 inline
00128 const T&
00129 min(const T& a, const T& b, const T& c, const T& d, const T& e,
00130 Compare comp) {
00131 return std::min(a, ads::min(b, c, d, e, comp), comp);
00132 }
00133
00142 template<typename T, typename Compare>
00143 inline
00144 const T&
00145 max(const T& a, const T& b, const T& c, Compare comp) {
00146 return std::max(a, std::max(b, c, comp), comp);
00147 }
00148
00154 template<typename T, typename Compare>
00155 inline
00156 const T&
00157 max(const T& a, const T& b, const T& c, const T& d, Compare comp) {
00158 return std::max(a, ads::max(b, c, d, comp), comp);
00159 }
00160
00166 template<typename T, typename Compare>
00167 inline
00168 const T&
00169 max(const T& a, const T& b, const T& c, const T& d, const T& e,
00170 Compare comp) {
00171 return std::max(a, ads::max(b, c, d, e, comp), comp);
00172 }
00173
00174
00175
00176 END_NAMESPACE_ADS
00177
00178 #endif