TuttleOFX
1
|
00001 #ifndef _TUTTLE_COMMON_MATH_MINMAX_HPP_ 00002 #define _TUTTLE_COMMON_MATH_MINMAX_HPP_ 00003 00004 #include <cmath> 00005 #include <algorithm> 00006 00007 #ifndef _MSC_VER 00008 using std::min; 00009 using std::max; 00010 #else 00011 #undef min 00012 #undef max 00013 00014 namespace tuttle { 00015 00016 template<typename T> 00017 inline T min( const T& a, const T& b ) 00018 { 00019 return std::_cpp_min( a, b ); 00020 } 00021 00022 template<typename T> 00023 inline T max( const T& a, const T& b ) 00024 { 00025 return std::_cpp_max( a, b ); 00026 } 00027 00028 } 00029 #endif 00030 00031 namespace tuttle { 00032 00033 template<typename T> 00034 inline T min( const T& a, const T& b, const T& c ) 00035 { 00036 return min( min( a, b ), c ); 00037 } 00038 00039 template<typename T> 00040 inline T max( const T& a, const T& b, const T& c ) 00041 { 00042 return max( max( a, b ), c ); 00043 } 00044 00045 template<typename T> 00046 inline T min( const T& a, const T& b, const T& c, const T& d ) 00047 { 00048 return min( min( a, b ), min( c, d ) ); 00049 } 00050 00051 template<typename T> 00052 inline T max( const T& a, const T& b, const T& c, const T& d ) 00053 { 00054 return max( max( a, b ), max( c, d ) ); 00055 } 00056 00057 } 00058 00059 #endif 00060