TuttleOFX  1
TuttleOFX/libraries/tuttle/src/tuttle/common/math/minmax.hpp
Go to the documentation of this file.
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